Как я могу написать собственное шаблонное резервное хранилище для универсального интерфейса? - PullRequest
3 голосов
/ 12 марта 2011

У меня есть интерфейс, скажем;

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

Я хотел бы создать класс, который обращается к нативной C / C ++ dll (которую я бы тоже создал), которая обеспечивает реализацию. Как я могу написать написание управляемого класса и собственного кода, чтобы это работало? Я знаю основы взаимодействия, но не знаю, как обрабатывать универсальные типы в этом контексте.

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

Это прекрасно в 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, это хорошая книга: Эксперт C ++ / CLI

0 голосов
/ 31 марта 2011

Когда вы делаете небольшие изменения в своем мышлении и требуете, чтобы T был типом интерфейса, производным от Object, и вы должны это сделать, тогда интерфейс C ++ становится намного более очевидным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...