CodeAttributeDeclaration - пользовательские атрибуты

Я хочу создать что-то вроде этого:

[MyAttribute (HelperClass.Param, ResourceType = typeof (Resources))] public string Foo {}

Как я могу создать этот настраиваемый атрибут? Это часть моего кода:

var configParamAttr = new CodeAttributeDeclaration { Name = "MyAttribute", Arguments = new CodeAttributeArgument { Name = "ResourceType", Value = new CodePrimitiveExpression("typeof(Resources)") } } };
 currentProperty.CustomAttributes.Add(configParamAttr);

Я не знаю, как добавить пользовательские атрибуты "HelperClass.Param". Это постоянный от другого класса. Дополнительный мой 'typeof (resources) является строкой в результате:

[MyAttribute( ResourceType="typeof(Resources)")]
 public string Foo
 {
 }
 }

Спасибо за ответы.

1 ответ

Следующий код, похоже, хорошо работает, делает ли он то, что вы хотите?

using System;

public class Program
{
 public static void Main()
 {
 Console.WriteLine("Hello World");
 var a = new Foo();
 var b = new Foo2();
 var res = a.GetType().CustomAttributes;
 foreach(var i in res)
 {
 Console.WriteLine(i);
 }
 var res2 = b.GetType().CustomAttributes;
 foreach(var i in res2)
 {
 Console.WriteLine(i);
 }
 }
}

[MyAttr(typeof(int))]
public class Foo
{
}

[MyAttr(Constants.Value,typeof(int))]
public class Foo2
{
}

public static class Constants
{
 public const int Value=1;
}

public class MyAttr:Attribute
{
 public Type Field {get;set;}

 public MyAttr(Type type)
 {
 this.Field=type;
 }
 public MyAttr(int a, Type type)
 {
 this.Field=type;
 }
}

licensed under cc by-sa 3.0 with attribution.