我想知道是否有更好的方法来写这段代码。在下面的SomeMethod()中,我希望返回IMyInterface类型,但根据条件,返回的对象可以创建为Class1或Class2。Class2有一个额外的属性,只有在条件为false时才有意义。
public interface IMyInterface
{
int Prop1 { get; set; }
string Prop2{ get; set; }
}
public class Class1: IMyInterface
{
public int Prop1 { get; set; }
public string Prop2{ get; set; }
}
public class Class2: IMyInterface
{
public int Prop1 { get; set; }
public string Prop2{ get; set; }
public string AdditionalProp{ get; set; }
}
public class SomeClass
{
public IMyInterface SomeMethod(bool cond)
{
IMyInterface foo;
if (cond)
{
foo = new Class1();
}
else
{
foo = new Class2();
}
foo.Prop1 = 1;
foo.Prop1 = "1";
if (!cond)
{
foo.AdditionalProp = "2";
}
}
}发布于 2020-03-27 01:18:07
如果我没弄错你的要求,下面的方法就解决了你的问题。
您可以内联初始化对象:
public IMyInterface SomeMethod(bool cond)
{
IMyInterface foo;
if (cond)
{
foo = new Class1();
}
else
{
foo = new Class2() { AdditionalProp = "2" };
}
foo.Prop1 = 1;
foo.Prop2 = "1";
return foo;
}https://stackoverflow.com/questions/60872527
复制相似问题