2013-05-10 36 views
0

我有一個類的最後一個對象,我們稱之爲MyClass的,有幾個特性,其中之一是一個COM對象(從iFeature的ESRI的ArcObjects)。其他屬性是標準的.NET對象。所以它看起來像這樣:COM對象都指向於加入

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. 
     } 
    } 
} 

我注意到了奇怪的行爲。其他屬性正確枚舉 - 當我調試時,我發現它通過列表中的每個對象並獲取當前值。但Feature屬性總是指向集合中最後一個MyClass對象的值。

有沒有其他人遇到過嗎?

有一些奇怪的事情COM回事,我是不知道的?

+0

顯示調用'DoStuffClass.Add'的代碼,並創建你的'MyClass'對象的代碼(如果分開)。我懷疑你只是在一個錯誤的範圍內有一個對象。 – 2013-05-10 17:12:28

+0

我在Add方法中做了一個測試,在這個方法中我檢查了要添加的對象的Feature屬性中的值,它們是正確的,所以我不認爲這是問題。 – lintmouse 2013-05-10 17:14:49

+1

取決於你如何檢查,這可能沒有幫助。例如。 http://ideone.com/8I4oXR – 2013-05-10 17:21:45

回答

-1

Tim S.對於問題的類型是正確的。我不得不追溯到源代碼的創建,並發現我用來從數據庫檢索功能的FeatureCursor類被設置爲回收功能。一旦我將該參數更改爲false,它將正常工作。

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

第二個參數是回收。這就是我爲了達到理想行爲而設定的錯誤。