本文整理汇总了C#中AssemblyCompiler.GetAttributeAnnotationMapping方法的典型用法代码示例。如果您正苦于以下问题:C# AssemblyCompiler.GetAttributeAnnotationMapping方法的具体用法?C# AssemblyCompiler.GetAttributeAnnotationMapping怎么用?C# AssemblyCompiler.GetAttributeAnnotationMapping使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AssemblyCompiler
的用法示例。
在下文中一共展示了AssemblyCompiler.GetAttributeAnnotationMapping方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateAttributeAnnotation
/// <summary>
/// Create an annotation for the given attribute
/// </summary>
private static void CreateAttributeAnnotation(AssemblyCompiler compiler, CustomAttribute attribute, TypeDefinition attributeType,
List<Annotation> annotationList, DexTargetPackage targetPackage)
{
// Gets the mapping for the type of attribute
var mapping = compiler.GetAttributeAnnotationMapping(attributeType);
MethodDefinition factoryMethod;
// Note: not multithreading capable. see my comments elsewhere.
if(mapping.FactoryMethodMap.ContainsKey(attribute))
factoryMethod = mapping.FactoryMethodMap[attribute];
else
{
// create the factory method.
factoryMethod = CreateFactoryMethod(compiler, targetPackage, attribute, mapping);
mapping.FactoryMethodMap[attribute] = factoryMethod;
}
// Create attribute annotation
var attrAnnotation = new Annotation { Visibility = AnnotationVisibility.Runtime };
attrAnnotation.Type = compiler.GetDot42InternalType("IAttribute").GetClassReference(targetPackage);
attrAnnotation.Arguments.Add(new AnnotationArgument("AttributeType", attributeType.GetReference(targetPackage, compiler.Module)));
attrAnnotation.Arguments.Add(new AnnotationArgument("FactoryMethod", factoryMethod.Name));
// Add annotation
annotationList.Add(attrAnnotation);
}