我有一个基类型和几个从该基类型派生的类型。基类型具有一个属性FriendlyName,该属性包含每个派生类型的常量信息(因此不是在每个实例级别上,而是在类型级别上)。
我将如何实现这一点?现在,我有这个(这不是我想做的)
public class BaseClass
{
protected static string friendlyName;
public static string FriendlyName {
get {
return friendlyName;
}
}
}
public class DerivedClassOne : BaseClass {
public DerivedClassOne() {
friendlyName = "A super duper derived class";
}
}
public class DerivedClassTwo : BaseClass {
public DerivedClassOne() {
friendlyName = "Yet another derived class";
}
}
还有别的办法来做我想做的事吗?或者这是做事情的方式,还是应该对每个派生类型使用名称相同的const字符串?
编辑:(希望)把事情弄清楚一点。我有一个MVC应用程序。所讨论的类是模型。在视图中,我显示了一个类型为@model IEnumerable<BaseType>
的列表。对于集合中的每一项,我想显示一个描述性文本,其中包含关于当前类型的信息,不仅仅是typeof(item).ToString()
,而是一个“友好”的描述。
发布于 2014-11-13 00:53:58
供你编辑。我将简单地创建一个自定义属性,或者使用.Net框架中现有的on,并使用attibute来装饰我的类。
[FriendlyName("Hey this is my cool class")]
public class DerivedClassOne : BaseClass
{
...
}
所有的类型都是如此。
然后使用Type.GetCustomAttributes
读取属性。就这么简单。
发布于 2014-11-13 00:39:25
我不认为你想在这里使用静电。如果您的方法是静态的,即使没有该类的实例,也可以调用它。此外,静态方法的值将是最后创建的实例(如果没有创建- null)。如果您想要使用静态,您应该为每个派生类型实现它。
public class BaseClass
{
protected readonly string friendlyName;
public string FriendlyName {
get {
return friendlyName;
}
}
}
public class DerivedClassOne : BaseClass {
public DerivedClassOne() {
friendlyName = "A super duper derived class";
}
}
public class DerivedClassTwo : BaseClass {
public DerivedClassOne() {
friendlyName = "Yet another derived class";
}
}
https://stackoverflow.com/questions/26904286
复制相似问题