本文整理汇总了C#中Mono.Cecil.TypeReference.Clone方法的典型用法代码示例。如果您正苦于以下问题:C# TypeReference.Clone方法的具体用法?C# TypeReference.Clone怎么用?C# TypeReference.Clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mono.Cecil.TypeReference
的用法示例。
在下文中一共展示了TypeReference.Clone方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TryResolve
/// <summary>
/// Resolves the type reference in the specified module.
/// </summary>
/// <param name="scope">The module where the type reference is resolved.</param>
/// <param name="typeRef">The type reference to resolve.</param>
/// <returns>The resolved type definition.</returns>
public static TypeDefinition TryResolve(this ModuleDefinition scope, TypeReference typeRef)
{
var matchingTypeRef = typeRef.Clone();
matchingTypeRef.Scope = scope;
return scope.MetadataResolver.TryResolve(matchingTypeRef);
}
示例2: Resolve
static TypeReference Resolve(TypeReference typeRef, Collection<TypeReference> genTypeContext)
{
if (!(typeRef is TypeSpecification) && !(typeRef is GenericParameter))
return typeRef;
TypeSpecification ret = typeRef.Clone() as TypeSpecification;
switch (typeRef.MetadataType)
{
case MetadataType.RequiredModifier:
(ret as RequiredModifierType).ModifierType = Resolve((typeRef as RequiredModifierType).ModifierType, genTypeContext);
ret.ElementType = Resolve(ret.ElementType, genTypeContext);
break;
case MetadataType.OptionalModifier:
(ret as OptionalModifierType).ModifierType = Resolve((typeRef as OptionalModifierType).ModifierType, genTypeContext);
ret.ElementType = Resolve(ret.ElementType, genTypeContext);
break;
case MetadataType.Array:
case MetadataType.ByReference:
case MetadataType.Pinned:
case MetadataType.Pointer:
ret.ElementType = Resolve(ret.ElementType, genTypeContext);
break;
case MetadataType.GenericInstance:
GenericInstanceType genInst = ret as GenericInstanceType;
genInst.GenericArguments.Clear();
foreach (var i in (typeRef as GenericInstanceType).GenericArguments)
genInst.GenericArguments.Add(Resolve(i, genTypeContext));
ret.ElementType = Resolve(ret.ElementType, genTypeContext);
break;
case MetadataType.MVar:
return typeRef;
case MetadataType.Var:
if (genTypeContext == null) throw new InvalidOperationException();
return genTypeContext[(typeRef as GenericParameter).Position];
case MetadataType.FunctionPointer: //not support
throw new NotSupportedException();
}
return ret;
}