【发布时间】:2018-07-14 09:50:55
【问题描述】:
我有一个要求,每个类都必须有一个静态只读属性以避免魔术字符串。最初,我想创建一个基类,强制每个派生类都实现静态只读属性。由于接口或抽象属性不能用于此目的。有没有办法在 C# 中实现这一点? 目前,我想到了以下解决方法,但我很容易看到它会导致未来的混乱,即,
基类
public abstract class Base
{
public virtual string StaticProperty { get; }
}
派生类
public abstract class Derived : Base
{
public new static string StaticProperty => "Some Value";
}
【问题讨论】:
-
您的要求是什么?你能给我们一个具体的例子来说明你的代码应该如何使用吗?
-
@RuiJarimba 一个具体的例子可能是任何派生类都必须将表名作为静态字符串以避免魔术字符串。
-
这感觉像是一个 XY 问题 - meta.stackexchange.com/questions/66377/what-is-the-xy-problem。为什么派生类型需要专门定义一个静态属性?
-
@ZerosAndOnes 不确定我是否理解您的问题,但请检查我的答案。