首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >类中的静态getter-只读属性

类中的静态getter-只读属性
EN

Stack Overflow用户
提问于 2014-11-13 00:24:49
回答 2查看 433关注 0票数 1

我有一个基类型和几个从该基类型派生的类型。基类型具有一个属性FriendlyName,该属性包含每个派生类型的常量信息(因此不是在每个实例级别上,而是在类型级别上)。

我将如何实现这一点?现在,我有这个(这不是我想做的)

代码语言:javascript
运行
AI代码解释
复制
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(),而是一个“友好”的描述。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-13 00:53:58

供你编辑。我将简单地创建一个自定义属性,或者使用.Net框架中现有的on,并使用attibute来装饰我的类。

代码语言:javascript
运行
AI代码解释
复制
[FriendlyName("Hey this is my cool class")]
public class DerivedClassOne : BaseClass 
{
...
}

所有的类型都是如此。

然后使用Type.GetCustomAttributes读取属性。就这么简单。

票数 1
EN

Stack Overflow用户

发布于 2014-11-13 00:39:25

我不认为你想在这里使用静电。如果您的方法是静态的,即使没有该类的实例,也可以调用它。此外,静态方法的值将是最后创建的实例(如果没有创建- null)。如果您想要使用静态,您应该为每个派生类型实现它。

代码语言:javascript
运行
AI代码解释
复制
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";
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26904286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档