本文整理汇总了C#中System.RuntimeMethodHandle.GetDeclaringType方法的典型用法代码示例。如果您正苦于以下问题:C# RuntimeMethodHandle.GetDeclaringType方法的具体用法?C# RuntimeMethodHandle.GetDeclaringType怎么用?C# RuntimeMethodHandle.GetDeclaringType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.RuntimeMethodHandle
的用法示例。
在下文中一共展示了RuntimeMethodHandle.GetDeclaringType方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetMethodInfo
// this method is a big perf hit, so don't call unnecessarily
internal static MethodInfo GetMethodInfo(RuntimeMethodHandle rmh)
{
if(rmh.IsNullHandle())
return null;
#if _DEBUG
try
{
#endif
// Assert here because reflection will check grants and if we fail the check,
// there will be an infinite recursion that overflows the stack.
PermissionSet.s_fullTrust.Assert();
RuntimeTypeHandle rth = rmh.GetDeclaringType();
return(System.RuntimeType.GetMethodBase(rth, rmh) as MethodInfo);
#if _DEBUG
}
catch(Exception)
{
return null;
}
#endif
}
示例2: CreateDelegate
internal static Delegate CreateDelegate(Type type, object target, RuntimeMethodHandle method)
{
if (type == null)
{
throw new ArgumentNullException("type");
}
if (!(type is RuntimeType))
{
throw new ArgumentException(Environment.GetResourceString("Argument_MustBeRuntimeType"), "type");
}
if (method.IsNullHandle())
{
throw new ArgumentNullException("method");
}
Type baseType = type.BaseType;
if ((baseType == null) || (baseType != typeof(MulticastDelegate)))
{
throw new ArgumentException(Environment.GetResourceString("Arg_MustBeDelegate"), "type");
}
Delegate delegate2 = InternalAlloc(type.TypeHandle);
if (!delegate2.BindToMethodInfo(target, method, method.GetDeclaringType(), DelegateBindingFlags.RelaxedSignature))
{
throw new ArgumentException(Environment.GetResourceString("Arg_DlgtTargMeth"));
}
return delegate2;
}
示例3: CreateDelegate
//
// internal implementation details (FCALLS and utilities)
//
// V2 internal API.
internal unsafe static Delegate CreateDelegate(Type type, Object target, RuntimeMethodHandle method)
{
// Validate the parameters.
if (type == null)
throw new ArgumentNullException("type");
if (!(type is RuntimeType))
throw new ArgumentException(Environment.GetResourceString("Argument_MustBeRuntimeType"), "type");
if (method.IsNullHandle())
throw new ArgumentNullException("method");
Type c = type.BaseType;
if (c == null || c != typeof(MulticastDelegate))
throw new ArgumentException(Environment.GetResourceString("Arg_MustBeDelegate"),"type");
// Initialize the method...
Delegate d = InternalAlloc(type.TypeHandle);
// This is a new internal API added in Whidbey. Currently it's only
// used by the dynamic method code to generate a wrapper delegate.
// Allow flexible binding options since the target method is
// unambiguously provided to us.
if (!d.BindToMethodInfo(target, method, method.GetDeclaringType(), DelegateBindingFlags.RelaxedSignature))
throw new ArgumentException(Environment.GetResourceString("Arg_DlgtTargMeth"));
return d;
}