简体   繁体   English

调用基本构造函数C#时重用参数

[英]Reuse parameters when calling base constructor c#

I have the following class structure: 我具有以下类结构:

class Foo{
  public Foo(Bar bar, Qux qux){
    ...
  }
}

class Bar{}

class Qux{
  public Qux(Bar bar){
    ...
  }
}

And I want create a new class FooFoo with a constructor without parameters something like: 我想用一个没有参数的构造函数创建一个新的类FooFoo

class  FooFoo:Foo{
     public FooFoo():base(var bar=new Bar(), new Qux(bar)) {
          //this do not compile
     }
}

How can I do it? 我该怎么做?

Currently my solution is: 目前,我的解决方案是:

class  FooFoo:Foo{

     public static FooFoo instantiate(){
        var bar= new Bar();
        var qux= new Qux(bar);
        return new FooFoo(bar,qux);
     }

     private FooFoo(Bar bar, Qux qux):base(bar,qux) {
     }
}

But it sound bad, right? 但这听起来不好,对吗?

How about: 怎么样:

public class FooFoo : Foo
{
    public FooFoo() : this(new Bar()) 
    {
    }

    public FooFoo(Bar bar) : base(bar, new Qux(bar)) 
    {
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM