在C#多个构造函数,如果你有多个构造函数,你可以这样做:复杂的逻辑
public MyClass(Guid inputId, string inputName){
// do something
}
public MyClass(Guid inputId): this(inputId, "foo") {}
的想法当然是代码重用。然而,当需要一些复杂的逻辑时,最好的方法是什么?说我想这个构造:
public MyClass(MyOtherClass inputObject)
{
Guid inputId = inputObject.ID;
MyThirdClass mc = inputObject.CreateHelper();
string inputText = mc.Text;
mc.Dispose();
// Need to call the main Constructor now with inputId and inputText
}
这里需要说明的是,我需要创建一个对象,有被使用后丢弃。 (澄清:不是立即,但我必须调用Dispose()而不是等待垃圾收集)
但是,我没有看到一种方法来再次调用基构造函数,如果我在我的重载构造函数中添加一些代码。有没有办法从超载的内部调用基础构造函数?
或者是有可能使用
public MyClass(MyOtherClass inputObject): this(inputObject.ID,
inputObject.CreateHelper().Text)
{}
这会自动从CreateHelper处置所产生的对象()?
编辑:感谢这么远。两个问题:我不控制MyOtherClass,我没有扩展方法(只有.NET 3.0 ...)。我这样做,虽然控制我自己的类,并且因为我刚开始写它,我没有问题,重构的构造函数,如果有一个很好的方法。
因为他说*有*在使用后被处置掉,所以我把它当作“立即使用后”的意思,在这种情况下,使用块将是必要的。 – 2008-09-20 23:18:36
这并没有真正解决所提出的问题,即如何对参数执行逻辑操作,并仍然使用构造函数():this()模式进入另一个构造函数。确实是 – 2008-09-20 23:18:40
。对不起,如果我不清楚。我的问题是,我需要再次与我的基础构造函数与数据,我必须处置mc,而不是等待垃圾收集。你和我的例子基本上是一样的,使用和调用Dispose()显式地使问题没有区别。 – 2008-09-20 23:27:21