向类,属性等提供元数据的方法

时间:2014-07-16 09:25:36

标签: c# reflection attributes metadata

我正在考虑为C#中的类和属性提供元数据/元信息的方法。

到目前为止,我唯一遇到的是属性,这对于提供metainfos很不错,但是它们只能通过类/属性的实例访问,而#34;包含"它们。

有没有办法提供静态元数据?

访问Property或Class名称的反射也是可能的,但是再次像属性一样,只有你有一个实例,并且你可能需要一个字符串。

为类提供静态Metainfo的方法可以是创建静态属性并将其用于此目的。 像这样:

Class A
{
    public static string Name { get{return "ClassA";}}
}

然而,对于属性,这是不可能的。

我的具体问题是我有多个课程,每个课程都有一个"第二个"名称(某些序列化目的所需)。类名本身和另一个。这可以通过提供如前所述的静态属性来完成。

但是,这些类中的每一个都具有应该具有2个名称的属性。

我知道我通过为每个属性设置自定义属性来提供此功能,但这只是一种解决方法,因为我可能需要第二个名称而不需要该类的实例。 只有我使用属性的解决方案是创建一个实例并以这种方式访问​​属性(在类实例化后属性不为null的情况下,否则它们也需要实例化...)

Class A
{
    [customAttribute("secondName")]
    public string property{ get; set;}
}

我很想知道在c#中提供metainfo的一些常规方法,当然如果有人也对我的问题有所了解;)

编辑:如果在编译时可以访问Metainfo,而不是运行时,这将是理想的。

0 个答案:

没有答案