我有一些遗留代码需要重构。
首先,我有一个子类接口:IChild。以及实现该接口的一些类,例如:ChildType1 : IChildChildType2 : IChildChildType3 : IChild

父级具有子类型属性,如果ChildType1具有值,则每次只有其中一个被初始化,而ChildType2ChildType3null

class Parent
{
    public ChildType1 Type1 { get; set; }
    public ChildType2 Type2 { get; set; }
    public ChildType3 Type3 { get; set; }
    //...
}


IChild具有一些重要的属性Enum:

public interface IChild
{
    ImportantEnum MyEnum { get; set; }
    //
}


我的问题是:关于以下事实,我不知道会启动哪一种类型,使子MyEnum属性可通过父api获得的最佳方法是什么?

我愿意进行重构。

最佳答案

在我看来,您需要更改您的Parent类-根据到目前为止提供的信息,这似乎是使用泛型的理想选择:

class Parent<TChild> where TChild : IChild
{
    public TChild Child { get; set; }
}

09-10 04:45