MEFはGenericsをサポートしない?
案外Genericsって使われていない?でも書いたけどDIでGenericsをサポートする要望は多いはずなのに。残念。回避方法はあるのかな。
元ねたは以下です。MEFはタイプベースじゃないんですね
Why doesn’t MEF support open-generics for exports? Because MEF is not type based.
最新版Preview6で以下のテストコードを試しましたがやはり通りません。
public interface IMessageSender<T> { void Send(T message); } [Export(typeof(IMessageSender<>))] public class EmailSender<T> : IMessageSender<T> { public void Send(T message) { Console.WriteLine(message.ToString()); } } [TestMethod] public void TestMethod1() { AssemblyCatalog catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); var container = new CompositionContainer(catalog); var val = container.GetExportedValue<IMessageSender<string>>(); Assert.IsTrue(val.GetType().Name.StartsWith("EmailSender")); }
追記
何とかできなくはなさそうです