Files
ZuneShell.dll/UIX/Microsoft/Iris/Markup/AssemblyMethodSchema.cs
T

47 lines
1.6 KiB
C#
Raw Normal View History

// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.Markup.AssemblyMethodSchema
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
// Assembly location: C:\Program Files\Zune\UIX.dll
using System.Reflection;
namespace Microsoft.Iris.Markup
{
internal class AssemblyMethodSchema : MethodSchema
{
private MethodInfo _methodInfo;
private TypeSchema[] _parameterTypes;
private TypeSchema _returnTypeSchema;
private FastReflectionInvokeHandler _method;
public AssemblyMethodSchema(
AssemblyTypeSchema owner,
MethodInfo methodInfo,
TypeSchema[] parameterTypes)
2021-03-31 17:15:06 -05:00
: base(owner)
{
2021-04-02 19:10:51 -05:00
_methodInfo = methodInfo;
_parameterTypes = parameterTypes;
_returnTypeSchema = AssemblyLoadResult.MapType(_methodInfo.ReturnType);
}
2021-04-02 19:10:51 -05:00
public override string Name => _methodInfo.Name;
2021-04-02 19:10:51 -05:00
public override TypeSchema[] ParameterTypes => _parameterTypes;
2021-04-02 19:10:51 -05:00
public override TypeSchema ReturnType => _returnTypeSchema;
2021-04-02 19:10:51 -05:00
public override bool IsStatic => _methodInfo.IsStatic;
public override object Invoke(object instance, object[] parameters)
{
object target = AssemblyLoadResult.UnwrapObject(instance);
object[] paramters = AssemblyLoadResult.UnwrapObjectList(parameters);
2021-04-02 19:10:51 -05:00
if (_method == null)
_method = ReflectionHelper.CreateMethodInvoke(_methodInfo);
return AssemblyLoadResult.WrapObject(_returnTypeSchema, _method(target, paramters));
}
}
}