我有一个类,我们称之为 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 事情发生?