本文整理汇总了C#中Mono.Cecil.CustomAttribute.SetFieldType方法的典型用法代码示例。如果您正苦于以下问题:C# CustomAttribute.SetFieldType方法的具体用法?C# CustomAttribute.SetFieldType怎么用?C# CustomAttribute.SetFieldType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mono.Cecil.CustomAttribute
的用法示例。
在下文中一共展示了CustomAttribute.SetFieldType方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BuildCustomAttribute
protected CustomAttribute BuildCustomAttribute(MethodReference ctor, CustomAttrib sig)
{
CustomAttribute cattr = new CustomAttribute (ctor);
foreach (CustomAttrib.FixedArg fa in sig.FixedArgs)
cattr.ConstructorParameters.Add (GetFixedArgValue (fa));
foreach (CustomAttrib.NamedArg na in sig.NamedArgs) {
object value = GetFixedArgValue (na.FixedArg);
if (na.Field) {
cattr.Fields [na.FieldOrPropName] = value;
cattr.SetFieldType (na.FieldOrPropName, GetNamedArgType (na));
} else if (na.Property) {
cattr.Properties [na.FieldOrPropName] = value;
cattr.SetPropertyType (na.FieldOrPropName, GetNamedArgType (na));
} else
throw new ReflectionException ("Non valid named arg");
}
return cattr;
}
示例2: addCustomAttributeToMethod
public static void addCustomAttributeToMethod(AssemblyDefinition assembly, string methodType,string methodToAdd, Type attributeType, Dictionary<System.String, System.String> fields)
{
var targetType = CecilUtils.getType(assembly, methodType);
//var targetType = CecilUtils.getMethodsassembly,methodType, typeToAdd);
if (targetType == null)
{
DI.log.error("in addCustomAttributeToType: could not find type {0} in assembly {1}", methodType, assembly.Name.Name);
}
else
{
var methods = CecilUtils.getMethods(targetType);
foreach (var method in methods)
{
if (method.Name == methodToAdd)
{
var customAttribute = new CustomAttribute(
assembly.MainModule.Import(attributeType.GetConstructor(new Type[] { })));
if (fields != null)
foreach (var field in fields)
{
//customAttribute.SetFieldType(field.Key, assembly.MainModule.Import(typeof(System.String)));
customAttribute.SetFieldType(field.Key, assembly.MainModule.Import(field.Value.GetType()));
customAttribute.Fields[field.Key] = field.Value;
}
method.CustomAttributes.Add(customAttribute);
}
}
}
//assembly.CustomAttributes.Add(customAttribute);
}
示例3: VisitCustomAttribute
public override void VisitCustomAttribute (CustomAttribute customAttr)
{
customAttr.Constructor = GetMethodReference (customAttr.Constructor);
Hashtable dict = new Hashtable (customAttr.Fields);
foreach (DictionaryEntry entry in dict)
customAttr.SetFieldType (
(string) entry.Key, GetTypeReference (customAttr.GetFieldType ((string) entry.Key)));
dict = new Hashtable (customAttr.Properties);
foreach (DictionaryEntry entry in dict)
customAttr.SetPropertyType (
(string) entry.Key, GetTypeReference (customAttr.GetPropertyType ((string) entry.Key)));
}
示例4: addCustomAttributeToAssembly
/*public static void addXTraceMethodInvocationAttribute(AssemblyDefinition assembly, string targetAssemblyName, string targetNamespace)
{
addCustomAttributeToAssembly(assembly, typeof(OnMethodInvocationAttribute),
new Dictionary<System.String, System.String>() {
{ "AttributeTargetAssemblies", targetAssemblyName}, // "mscorlib"},
{ "AttributeTargetTypes", targetNamespace} //"System.Console.*"}
});
}*/
public static void addCustomAttributeToAssembly(AssemblyDefinition assembly, Type attributeType, Dictionary<System.String, System.String> fields)
{
var customAttribute = new CustomAttribute(
assembly.MainModule.Import(attributeType.GetConstructor(new Type[] { })));
if (fields!=null)
foreach (var field in fields)
{
//customAttribute.SetFieldType(field.Key, assembly.MainModule.Import(typeof(System.String)));
customAttribute.SetFieldType(field.Key, assembly.MainModule.Import(field.Value.GetType()));
customAttribute.Fields[field.Key] = field.Value;
}
assembly.CustomAttributes.Add(customAttribute);
}