C#:集合元素的属性

时间:2015-10-23 17:21:30

标签: c# reflection collections custom-attributes

在C#中可以将属性应用于元素,它将被打包在集合中? 我有Dictionary<string,Func<int,int,int>>并以这种方式添加元素

Dictionary<string,Func<int,int,int>> dict = new Dictionary<string,Func<int,int,int>>();

dict.Add("SUM", (a,b) => {return a+b;});

所以我想向使用"SUM"键的元素添加其他信息,例如"Returns summary of two numbers"。可以使用属性来完成,还是必须在集合中包含其他数据?

1 个答案:

答案 0 :(得分:1)

如果您查看可以应用属性的内容,您会注意到您只能将它应用于Assembly,Class,Constructor,Delegate,Enum,Event,Field,Gen​​ericParameter,Interface,Method,Module,Parameter ,Property,ReturnValue或Struct(source)。您不能将属性应用于单个值,因此您必须存储其他数据,您可以创建一个小类,如:

public class Operation
{
    public string Description {get;set;}
    public Func<int, int, int> Func {get;set;}
}

然后在你的字典中使用它,如:

dict.Add("SUM", new Operation() { 
    Description = "Adds numbers", 
    Func = (a,b) => {return a+b;} 
    });