Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

export generics in MEF

I want to export a generic class to a generic interface via MEF. My objects are:

public interface IService<T> { }

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

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

But when I try to export IService<T>, I get this error:

Attribute argument cannot use type parameters

Can anybody guide me to do this please?

like image 990
amiry jd Avatar asked Feb 15 '12 14:02

amiry jd


1 Answers

Try

[Export(typeof(IService<>))]

To get a generic type definition from the typeof operator, you omit type arguments. For types with more than one type parameter, use commas to indicate the "arity" of the type. For example:

typeof(List<>)              // not: typeof(List<T>)
typeof(IDictionary<,>)      // not: typeof(IDictionary<K, V>)
like image 173
phoog Avatar answered Sep 29 '22 18:09

phoog