C# - 将数据自定义检查添加到编译过程

时间:2017-06-30 09:48:23

标签: c# compilation

Context:一个简单的基类,它包含一个名称和几个方法。

public abstract class BaseElement
{
    public string Name { get; set; }

    public abstract object GetDescription();

    public abstract void DoStuff();
}

开发人员可以继承BaseElement,他必须实现GetDescription()DoStuff(),但可以完全忘记为Name属性赋值。

一个简单的解决方案就是以这种方式改变类:

public abstract class BaseElement
{
    public string Name { get; private set; }

    public abstract object GetDescription();

    public abstract void DoStuff();

    private BaseElement()
    {
    }

    public BaseElement(string name)
    {
            Name = name;
    }
}

所以,这种方式当你子类时,你被迫分配一个名字。 不过,您始终可以使用null""

好的,然后我可以在ctor中添加一个参数检查并抛出相对异常,但是......在尝试使用派生类之后,你只会在运行时发现错误。

所以,问题是:是否可以添加编译时规则来指示编译器检查变量的可能值,以便在编译时而不是在运行时发现问题?

1 个答案:

答案 0 :(得分:1)

这样怎么样?

  public string Name
        {
            get { return _name; }
            private set
            {
                if (!string.IsNullOrWhiteSpace(value))
                    _name = value;
                else
                {
                    throw new Exception("Exception");
                }
            }
        }