本文整理汇总了C#中ClassLoaderWrapper.ArgTypeListFromSig方法的典型用法代码示例。如果您正苦于以下问题:C# ClassLoaderWrapper.ArgTypeListFromSig方法的具体用法?C# ClassLoaderWrapper.ArgTypeListFromSig怎么用?C# ClassLoaderWrapper.ArgTypeListFromSig使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ClassLoaderWrapper
的用法示例。
在下文中一共展示了ClassLoaderWrapper.ArgTypeListFromSig方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Emit
internal void Emit(ClassLoaderWrapper loader, CodeEmitter ilgen)
{
if(Type != "static" || Class == null || Name == null || Sig == null)
{
throw new NotImplementedException();
}
Type[] redirParamTypes = loader.ArgTypeListFromSig(Sig);
for(int i = 0; i < redirParamTypes.Length; i++)
{
ilgen.Emit(OpCodes.Ldarg, (short)i);
}
// HACK if the class name contains a comma, we assume it is a .NET type
if(Class.IndexOf(',') >= 0)
{
Type type = StaticCompiler.Universe.GetType(Class, true);
MethodInfo mi = type.GetMethod(Name, redirParamTypes);
if(mi == null)
{
throw new InvalidOperationException();
}
ilgen.Emit(OpCodes.Call, mi);
}
else
{
TypeWrapper tw = loader.LoadClassByDottedName(Class);
MethodWrapper mw = tw.GetMethodWrapper(Name, Sig, false);
if(mw == null)
{
throw new InvalidOperationException();
}
mw.Link();
mw.EmitCall(ilgen);
}
// TODO we may need a cast here (or a stack to return type conversion)
ilgen.Emit(OpCodes.Ret);
}