我想创造类似的东西:
[MyAttribute(HelperClass.Param,ResourceType = typeof(Resources))] 公共字符串Foo { }
我如何创建此自定义属性? 这是我的代码:
var configParamAttr = new CodeAttributeDeclaration { Name = "MyAttribute", Arguments = new CodeAttributeArgument { Name = "ResourceType", Value = new CodePrimitiveExpression("typeof(Resources)") } } };
currentProperty.CustomAttributes.Add(configParamAttr);
我不知道如何投入自定义属性' HelperClass.Param'。这与其他班级不变。我的' typeof(资源)是结果中的字符串:
[MyAttribute( ResourceType="typeof(Resources)")]
public string Foo
{
}
}
感谢您的回答。
答案 0 :(得分:0)
以下代码似乎运行良好,它能做到你想要的吗?
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;
}
}