我想用一个匹配接口类的新实例替换多个列表中引用的对象。
以下是更好地了解问题的示例。
答案 0 :(得分:2)
您可以为数据创建容器。
public interface IContainer<T>
{
T Data { get; set; }
}
和List<IContainer<IPosition>>
。
现在,您可以更改容器的Data
,而不是更改项目引用。
答案 1 :(得分:0)
您可以遍历列表并比较项目。
public interface IPosition
{
int ID { get; set; }
}
public class RealPosition : IPosition
{
public int ID { get; set; }
}
public class AccessiblePosition : IPosition
{
public int ID { get; set; }
}
void Main()
{
var toReplace = new RealPosition { ID = 1 };
var list1 = new List<IPosition>
{
toReplace,
new RealPosition { ID = 2 },
new RealPosition { ID = 3 },
};
var list2 = new List<IPosition>
{
toReplace,
new RealPosition { ID = 4 },
new RealPosition { ID = 5 },
};
var listOfLists = new List<List<IPosition>>{ list1, list2 };
var replacement = new AccessiblePosition{ ID = 42 };
foreach(var list in listOfLists)
{
//must use for here
for(int i = 0; i < list.Count; ++i)
{
if(list[i] == toReplace)
{
list[i] = replacement;
}
}
}
}