2011-03-12 36 views
3

我有一個接口,說;如何爲通用接口編寫原生模板後備存儲?

public interface ICustomCollection<T> 
{ 
    void Add(T item); 
    bool Remove(T item); 
    bool Contains(T item); 
} 

我想創建一個訪問本地C/C++ DLL(這也是我想創建),它提供了一個實現類。我該如何着手編寫託管類和本地代碼才能運行?我知道互操作基礎知識,但我不知道如何在這種情況下處理泛型類型。

回答

0

當您在思維上稍作調整並要求T是從Object派生的接口類型時,您應該這樣做,那麼C++接口就會變得更加明顯。

+0

我應該說是C++/CLI界面應該成爲明顯的,因爲你不會寫一個純粹的C++ DLL。 – dexblack 2011-03-31 02:49:28

0

這建立在Visual Studio 2010罰款:

template<class T> 
public interface class ICustomCollection 
{ 
    virtual void Add(T item); 
    virtual bool Remove(T item); 
    virtual bool Contains(T item); 
}; 

template<class T> 
public ref class GenericCustomCollection : ICustomCollection<T> 
{ 
    virtual void Add(T item){ } 
    virtual bool Remove(T item){ return false; } 
    virtual bool Contains(T item){ return false; } 
}; 

public ref class ConcreteCustomCollection : ICustomCollection<int> 
{ 
public: 
    virtual void Add(int item){ } 
    virtual bool Remove(int item){ return false; } 
    virtual bool Contains(int item){ return false; } 
}; 

我只是做了它建立所需的最低,您可以使用此作爲起點爲您實現。

如果你開始使用C++/CLI,這是一本好書:Expert C++/CLI