C# constructor in interface
我知道在接口中不能有构造函数,但我想做的是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
我真的想用一个构造函数来替换
这样,我的成员类可以实现接口,并且仍然是只读的(它不能与
有没有人有一个模式可以做我想要的?
使用抽象类?
如果需要,还可以让抽象类实现接口…
1 2 3 4 5 6 7 8 9 10 11 | interface IFillable<T> { void FillWith(T); } abstract class FooClass : IFillable<DataRow> { public void FooClass(DataRow row){ FillWith(row); } protected void FillWith(DataRow row); } |
(我应该先检查一下,但我累了——这大多是副本。)
要么有一个工厂接口,要么将一个
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | interface ISomething { // Normal stuff - I assume you still need the interface } class Something : ISomething { internal Something(DataRow row) { // ... } } class FooClass<T> where T : ISomething , new() { private readonly Func<DataRow, T> factory; internal FooClass(Func<DataRow, T> factory) { this.factory = factory; } void BarMethod(DataRow row) { T t = factory(row); } } ... FooClass<Something> x = new FooClass<Something>(row => new Something(row)); |