问题比正常时间长,但我试图详细说明。请耐心等待并阅读整个问题,这可能是一个有趣的问题
我目前有一个方法 A,它接受一个具有两个属性List<X>
但代表两个不同实体的对象,因此该属性被恰当地命名为 R 和 S。类结构是
class A
{
List<X> R;
List<X> S;
}
现在我有一个方法可以接受 A 类型的输入,并且可以同时使用(集合,方法签名如下)
public void updateMe(A objA)
{
}
现在我有一个需要重用此方法的情况,但现在的情况是我不需要区分实体,因此有一个列表List<X>
T。
现在我的问题是如何重构该方法以使用单个列表,但仍然提供在早期情况下区分两个列表的能力。
我的方法将更新这些集合,因此要么添加到列表中,要么从中删除。
我目前的解决方案是创建新类来表示从 X 派生的两个不同实体,然后将这个基类列表传递给我的方法并让方法更新这个基类,然后在阅读它时我将能够识别哪个对象是什么类型。
因此我的新课程将是
public class X1:X
{
}
public class X2:X
{
}
class A
{
List<X> R;
}
这是最好的解决方案还是我可以在这里采取任何其他方法.. 我似乎不喜欢扩展一个类只是为了识别类型而不添加任何属性的想法..