0

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

4

1 回答 1

-1

Tim S. 关于问题的类型是正确的。我不得不将 Feature 的创建追溯到其来源,并发现我用来从数据库中检索特征的 FeatureCursor 类被设置为回收特征。一旦我将该参数更改为false,它就可以正常工作。

IFeatureCursor featureCursor = featureClass.Search(queryFilter, false);

第二个参数用于回收。这就是我设置为 false 以实现所需行为的内容。

于 2013-05-10T20:42:12.813 回答