【发布时间】:2012-05-31 12:43:22
【问题描述】:
我创建了一个具有自己派生设置的派生类。
public abstract class BaseClass
{
public BaseClass(Game1 game, BaseClassSettings settings)
{
if (settings == null)
{
Console.WriteLine("BASE PANIC!");
}
}
public abstract BaseClassSettings Write();
}
public abstract class BaseClassSettings
{
public abstract BaseClass Load(Game1 game, BaseClassSettings settings);
}
在实例化类时,我重载构造函数以调用基类并创建正确派生设置的新实例。
public class DerivedFoo : BaseClass
{
public DerivedFoo(Game1 game, DerivedFooSettings settings)
:base(game, settings == null ? new DerivedFooSettings() : settings)
{
if (settings == null)
{
Console.WriteLine("DERIVED PANIC!");
}
}
public override BaseClassSettings Write()
{
DerivedFooSettings settings = new DerivedFooSettings();
return settings;
}
}
public class DerivedFooSettings : BaseClassSettings
{
public override BaseClass Load(Game1 game, BaseClassSettings settings)
{
return new DerivedFoo(game, settings as DerivedFooSettings);
}
}
这个方法的问题是三级运算符只对基类起作用,并没有将新的实例传递给派生类的构造函数。 (“设置”保持为空)
如何在派生类的构造方法中自动传递设置而不必复制三级运算符?
我无法将设置存储在基类中,因为它们的类型不正确。
【问题讨论】: