2012-02-15 14 views
11

Quiero exportar una clase genérica a una interfaz genérica a través de MEF. Mis objetos son:genéricos de exportación en MEF

public interface IService<T> { } 

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

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

Pero cuando intento exportar IService<T>, me sale este error:

Attribute argument cannot use type parameters

me puede orientar a nadie a hacer esto, por favor?

+0

Por cierto, lo recomendaría para especificar una interfaz como: 'Servicio public class donde T: IMyInterface' – rekire

Respuesta

20

Trate

[Export(typeof(IService<>))] 

Para obtener una definición de tipo genérico del operador typeof, se omite argumentos de tipo. Para los tipos con más de un parámetro de tipo, use comas para indicar la "aridad" del tipo. Por ejemplo:

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