0

MEF を使用して WCF RIA ドメイン サービスを構成することは可能ですか?

ドメイン サービスに以下のプロパティがあるとします。

[Import(RequiredCreationPolicy = CreationPolicy.Shared)]
public TestClass Dependency{ get; set; }

そしてTestClass..

[Export]
public class TestClass
{
    public void Do()
    {

    }
}

そして、私は DomainServiceFactory クラスを持っています:

public class DomainServiceFactory : IDomainServiceFactory
{
    private readonly ComposablePartCatalog _catalog;
    private readonly CompositionContainer _container;

    public DomainServiceFactory()
    {
        _catalog = new TypeCatalog(typeof(DomainService1), typeof(DomainService2));

        _container = new CompositionContainer(_catalog);
        //What should I call here? _container.SatisfyImportsOnce(this);
    }

    #region Implementation of IDomainServiceFactory

    public DomainService CreateDomainService(Type domainServiceType, DomainServiceContext context)
    {
        DomainService domainService;
        var export = _container.GetExports(domainServiceType, null, null).FirstOrDefault();
        if(export != null)
        {
            domainService = (DomainService) export.Value;
        }
        else
        {
            domainService = (DomainService)Activator.CreateInstance(domainServiceType);
        }


        domainService.Initialize(context);

        return domainService;

    }

    public void ReleaseDomainService(DomainService domainService)
    {
        domainService.Dispose();
    }

    #endregion
}

SatisfyImportsOnce はコンテナーを構築する方法ですか? 入力パラメーターは ComposablePart ですが、何を渡す必要がありますか?

よろしく。

4

1 に答える 1

0

以下を呼び出すと、すでにコンテナーが作成されています。

_container = new CompositionContainer(_catalog);

そして、あなたはあなたDomainServiceFactoryにインポートを持っていないので、ほとんど意味がありません_container.SatisfyImportsOnce(this);

を呼び出すとexport.Value、ドメイン サービス タイプのすべてのインポートが自動的に満たされます。あなたは何を見逃していますか/達成しようとしていますか?

于 2012-07-27T15:38:53.397 に答える