我有以下课程:
public class Base
{
private int x;
public Base(int _x) { x = _x; }
}
public class Derived : Base
{
int y;
public Derived(int _x,int _y) : base(_x) { y = _y; }
}
我想创建一个假的'Derived'对象,但要调用原始构造函数并忽略基础构造函数。 我怎么能这样做?
答案 0 :(得分:1)
Isolate.Fake.Instance<Derived(Members.CallOriginal,ConstructorWillBe.Called, BaseConstructorWillBe.Ignored);
它允许我创建一个假对象,调用原始构造函数并忽略基础构造函数。
答案 1 :(得分:0)
你不能。实例化Derived
对象时,Base
的构造函数必须运行;毕竟,Derived
实例也是Base
,创建Base
的逻辑必须在流程的某个位置执行。
你可能会混淆不调用base
构造函数,而是隐式调用它的情况;当Base
具有可访问的默认构造函数时会发生这种情况:
public class Base
{
private int x;
public Base() { } //default constructor
public Base(int _x) { x = _x; }
}
然后这是合法的:
public class Derived : Base
{
int y;
public Derived(int _y) { y = _y; } //no explicit base() needed.
}
但这只是因为编译器会为你添加隐式调用。真正的代码是:
public class Derived : Base
{
int y;
public Derived(int _y) : base() { y = _y; }
}
这似乎是XY Problem。你真的想做什么?