相关疑难解决方法(0)

强制派生类用参数实现基类构造函数

是否可以对需要实现构造函数(带参数)的派生类强制执行编译时合同?

我有一个基类与构造函数需要一个参数:

public class FooBase
{
  protected int value;
  public FooBase(int value) { this.value = value; }
  public virtual void DoSomething() { throw new NotImplementedException(); }
}
Run Code Online (Sandbox Code Playgroud)

我想强制我的基类的派生实现相同的构造函数:

public class Foo : FooBase
{
  public Foo(int value) : base(value) { }
  public override void DoSomething() { Console.WriteLine("Foo: {0}", value); }
}
Run Code Online (Sandbox Code Playgroud)

如果没有实现构造函数,派生类会导致编译器错误,因为基类中没有默认构造函数:

// ERROR: 'Does not contain a constructor that takes 0 arguments'
// Adding default constructor in FooBase eliminates this compiler error, but
// provides a means to instantiate …
Run Code Online (Sandbox Code Playgroud)

.net c#

16
推荐指数
2
解决办法
3万
查看次数

标签 统计

.net ×1

c# ×1