2

可以说我有以下内容:

public interface IFoo
{
  void Foo();
}

public interface IBar
{
  void Bar();
}

public class FooAndBar : IFoo, IBar
{
  //valid implementation
}

现在我有一个在构造函数中接受 IFoo 和 IBar 的类,但也有一个无参数的构造函数。

public class Consumer
{
  private IFoo foo;
  private IBar bar;
  public Consumer(IFoo foo, IBar bar)
  {
     this.foo = foo;
     this.bar = bar;
  }

  public Consumer() : this(new FooAndBar(), new FooAndBar()) {}
}

我想维护调用参数化版本的无参数构造函数之间的关系。但我想传入一个引用对象,而不是“新建”两个 FooAndBar 实例。无论如何要在保持构造函数之间的关系的同时做到这一点?

4

1 回答 1

8

您可以创建一个以 FooAndBar 作为参数的临时私有构造函数:

private Consumer(FooAndBar fooAndBar) : this(fooAndBar, fooAndBar) {}

public Consumer() : this(new FooAndBar()) {}
于 2012-04-11T18:12:26.940 回答