экспорт дженериков в MEF - PullRequest
       27

экспорт дженериков в MEF

13 голосов
/ 15 февраля 2012

Я хочу экспортировать универсальный класс в универсальный интерфейс через MEF.Мои объекты:

public interface IService<T> { }

[Export(typeof(IService<T>))] // error!!!!!!
public class Service<T> { }

public class Client<T> {
    [Import]
    private IService<T> _service;
}

Но когда я пытаюсь экспортировать IService<T>, я получаю эту ошибку:

Аргумент атрибута не может использовать параметры типа

Кто-нибудь может мне помочь, пожалуйста?

1 Ответ

25 голосов
/ 15 февраля 2012

Попробуйте

[Export(typeof(IService<>))]

Чтобы получить определение универсального типа из оператора typeof, пропустите аргументы типа.Для типов с более чем одним параметром типа используйте запятые для обозначения «арности» типа.Например:

typeof(List<>)              // not: typeof(List<T>)
typeof(IDictionary<,>)      // not: typeof(IDictionary<K, V>)
...