我正在考虑为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,而不是运行时,这将是理想的。