我有一个基类和派生类,它们结合了许多需要初始化的参数。我想使用依赖注入,更具体地说,在构造派生时注入基本部分。
例如
abstract class Baseclass
{
private int a, b, c, d, e;
public Baseclass(int A, int B, int C, int D, int E)
{
a = A;
b = B;
c = C;
d = D;
e = E;
}
public Baseclass(Baseclass basepart)
{
this = basepart; // error `this` is readonly
a = basepart.a; // so I use this method instead
b = basepart.b;
c = basepart.c;
d = basepart.d;
e = basepart.e;
}
}
class Derived : Baseclass
{
public Derived(Baseclass i_Basepart) : base(i_Basepart){}
}
常规的ctor和" copy ctor"看起来非常相似,因为它们有很多参数(比这个例子更多),所以它看起来并不正确。还有另一种方法吗?
答案 0 :(得分:3)
这是继承的构成发挥作用的地方。您可以将设置移到另一个类中并将其传递到:
class Baseclass
{
private Parameters parameters;
public BaseClass(Parameters parameters)
{
this.parameters = parameters;
}
}
class Derived : Baseclass
{
public Derived(Parameters parameters) : base(parameters) { }
}
class Parameters
{
int a, b, c, d, e, etc.
}
您甚至可以在Baseclass中编写一些getters / setter,以透明(以调用方式)的方式访问Parameters值。 e.g:
public A { get { return parameters.a; } set { parameters.a = value; } }