繁体   English   中英

如何为通用接口编写本机模板化后备存储?

[英]How can I write a native templated backing storage for a generic interface?

我有一个界面,说;

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

我想创建一个访问本机C / C ++ DLL(我也创建)的类,它提供了实现。 如何编写托管类和本机代码才能使用? 我知道interop基础知识,但我不知道在这种情况下如何处理泛型类型。

当你稍微改变思路并要求T是一个派生自Object的接口类型时,你应该这样做,那么C ++接口变得更加明显。

这在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM