我有一个类,我们称之为 MyClass,它有几个属性,其中一个是 COM 对象(来自 ESRI ArcObjects 的 IFeature)。其他属性是标准的 .NET 对象。所以它看起来像这样:
public class MyClass
{
//COM object
public IFeature Feature { get; set; }
public MyOtherClass Other { get; set; }
}
这个人通过 Add 方法被添加到另一个类的列表中。然后,这些 MyClass 对象在具有列表的类中的 foreach 循环中被枚举。就像是:
public DoStuffClass()
{
private List<MyClass> myClasses;
public void Add(MyClass myClass)
{
this.myClasses.Add(myClass);
}
public void DoStuff()
{
foreach (MyClass myClass in this.myClasses)
{
//Do stuff here.
}
}
}
我注意到奇怪的行为。Other 属性被正确枚举 - 当我调试时,我看到它遍历列表中的每个对象并获取当前值。但 Feature 属性始终指向集合中最后一个 MyClass 对象中的值。
有人遇到过这种情况么?
是否有一些我不知道的奇怪的 COM 事情发生?