gpt4 book ai didi

c# - 在抽象父类(super class)的子类中强制使用属性

转载 作者:可可西里 更新时间:2023-11-01 08:42:36 26 4
gpt4 key购买 nike

如何强制子类实现其父类(super class)的某些属性?原因是我想使用属性来获取有关该类的一般信息,例如“显示名称”、“说明”或“功能”。

所以我想我可以在父类(super class)中实现它们并强制子类实现这些属性。

是否有类似于方法的抽象属性?

[abstract DeclareMe]
public abstract class InheritMe {
public abstract void DeclareMe();
}

最佳答案

由于你的类迟早要运行,你可以在你的基类中添加检查机制来验证你的子类中某些属性的存在。

这里有一些示例代码。

class Program
{
static void Main(string[] args)
{
var a = new SubA();
var b = new SubB();
}
}

class BaseClass
{
public BaseClass()
{
Type t = GetType();
if (t.IsDefined(typeof(SerializableAttribute), false) == false)
{
Console.WriteLine("bad implementation");
throw new InvalidOperationException();
}
Console.WriteLine("good implementation");
}
}

[Serializable]
class SubA : BaseClass
{ }

class SubB : BaseClass
{ }

最后一句话,不要太警惕自己。有一次我在做设计的时候,我总觉得我可能会按错误的顺序调用两个方法或者忘记做某事,然后我把一个简单的设计变成了一个复杂的设计,以防止我可能的错误。后来我把守卫都扔掉了,直接抛Exceptions,检测意外情况的代码都被#if DEBUG包围了。

关于c# - 在抽象父类(super class)的子类中强制使用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11409031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com