MEF を使用して SignalR の DependencyResolver を作成しようとしています。これまでのところ、私は次のものを持っています:
public class SignalRMefDependencyResolver : DefaultDependencyResolver
{
private readonly CompositionContainer _container;
public SignalRMefDependencyResolver(CompositionContainer container)
{
_container = container;
}
public override object GetService(Type serviceType)
{
var export = _container.GetExports(serviceType, null, null).SingleOrDefault();
return null != export ? export.Value : base.GetService(serviceType);
}
public override IEnumerable<object> GetServices(Type serviceType)
{
var exports = _container.GetExports(serviceType, null, null);
var createdObjects = new List<object>();
if (exports.Any())
{
createdObjects.Concat(exports.Select(x => x.Value));
}
createdObjects.Concat(base.GetServices(serviceType));
return createdObjects;
}
}
GetService は機能していると思いますが、GetServices は IHubDescriptorProvider および IMethodDescriptorProvider のエクスポートを MEF またはベースで見つけることができません。
私の Application_Start には、2 番目に発生するものとして次のものがあります。最初は MEF コンテナーの作成です。
RouteTable.Routes.MapHubs(new SignalRMefDependencyResolver(MefConfig.Container));
私も試しました:
GlobalHost.DependencyResolver = new SignalRMefDependencyResolver(MefConfig.Container);
RouteTable.Routes.MapHubs();
同じ結果で。
ここで明らかな何かが欠けていますか?私が見つけたすべてのサンプルは他のコンテナー用であり、より複雑に見えます。
ありがとう