0

ジェネリック型リポジトリ インターフェイスのコンストラクター インジェクションを実装しようとしています。http://msdn.microsoft.com/en-us/library/ff660933(v=pandp.20).aspxドキュメントを適用してこれを行います。ただし、xml-editor は、たとえば次の角括弧を受け入れません。

    <alias alias="IGenericRepository"
       type="Design.DataModel.Interfaces.IGenericRepository'1    [[Design.DataModel.Entities.GaugeModel, Design.DataModel]], Design.DataModel"/>    

xml-editor で次のエラーが表示されます:「予期しないテキスト」。完全な xml セクションは次のとおりです。

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<sectionExtension prefix="" type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration" />

<alias alias="IGenericRepository" type="Design.DataModel.Interfaces.IGenericRepository'1[[Design.DataModel.Entities.GaugeModel, Design.DataModel]], Design.DataModel"/>
<alias alias="GenericSqlRepository" type="Design.DataAccess.GenericSqlRepository'1[[Design.DataModel.Entities.GaugeModel, Design.DataModel]], Design.DataAccess"/>
<alias alias="IGaugeModelbaseService" type="Design.Contracts.IGaugeModelbaseService, Design.Contracts"/>
<alias alias="GaugeModelbaseService" type="Design.ContractImplememtations.GaugeModelbaseService, Design.ContractImplementations"/>
<alias alias="IContractMapper" type="Design.ContractImplementations.IContractMapper, Design.ContractImplementations"/>
<alias alias="ContractMapper" type="Design.ContractImplementations.ContractMapper"/>
 <container>
  <register type="IGaugeModelbaseService" mapTo="GaugeModelbaseService"> 
    <interceptor type="InterfaceInterceptor" />
  </register>
  <register type="IContractMapper" mapTo="ContractMapper"> 
    <lifetime type="hierarchical" />
  </register>
  <register type="IGenericRepository" mapTo="GenericSqlRepository">
    <lifetime type="hierarchical" />
  </register>
</container>  

ただし、svc の結果を参照すると、「型名または別名 GaugeModelbaseService を解決できませんでした」というエラーが発生します。

xml は、次の流暢な API 構成と同等である必要があります (正常に動作します)。

public class WcfServiceFactory : UnityServiceHostFactory
{
    #region Methods

    protected override void ConfigureContainer(IUnityContainer container)
    {
        //container.LoadConfiguration();
        container.AddNewExtension<EnterpriseLibraryCoreExtension>();
        container.AddNewExtension<Interception>();
        container.RegisterType<IGaugeModelbaseService, GaugeModelbaseService>(
            new InterceptionBehavior<PolicyInjectionBehavior>(), new Interceptor<TransparentProxyInterceptor>());
        container.RegisterType<IContractMapper, ContractMapper>(new HierarchicalLifetimeManager());
        container.RegisterType<IGenericRepository<GaugeModel>, GenericSqlRepository<GaugeModel>>(
            new HierarchicalLifetimeManager());
    }

    #endregion
}

xml-configuration で何か見落としがありますか? 助けてください。

4

1 に答える 1

0

これは構成ファイルからの直接のコピー/貼り付けですか? もしそうなら、問題はタイプミスです:

<alias alias="GaugeModelbaseService" type="Design.ContractImplememtations.GaugeModelbaseService, Design.ContractImplementations"/>

注:「実装」

それ以外の場合、構文は正しいように見えます。

于 2012-09-30T17:50:08.837 に答える