【问题标题】:Unity [Dependency] attribute doesn't resolveUnity [Dependency] 属性无法解析
【发布时间】:2023-04-03 16:05:01
【问题描述】:

我有以下代码,当我尝试运行它时,我可以看到 BrokerProvider 没有被解析。这是我的代码:

static void Main(string[] args)
        {
            IUnityContainer container = new UnityContainer();
            UnityConfigurationSection section = (UnityConfigurationSection) ConfigurationManager.GetSection("unity");
            section.Containers.Default.Configure(container);

            new TestBroker().RunTestBroker();              
        }


class TestBroker
    {
        private IBrokerProvider brokerProvider;

        public void RunTestBroker()
        {
            List<IPortfolio> portfolios = BrokerProvider.GetPortfolios();
        }

        [Dependency]
        public IBrokerProvider BrokerProvider
        {
            get { return brokerProvider; }
            set { brokerProvider = value; }
        }
    }

相关配置

 <unity>
    <typeAliases>
      <typeAlias alias="string" type="System.String, mscorlib" />
      <typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />
      <typeAlias alias="IBrokerProvider" type="PA.Common.Interfaces.IBrokerProvider, PA.Common" />

      <typeAlias alias="PManager" type="PA.BrokerProviders.PManager, PA.BrokerProviders" />
    </typeAliases>
    <containers>
      <container>
        <types>
          <type type="IBrokerProvider" mapTo="PManager">
            <lifetime type="singleton" />
          </type>
        </types>
      </container>
    </containers>
  </unity>

另一个问题:我是否需要在我想使用 unity 的每个其他类中重复我在 main 下的相同 3 行代码,或者设置一次就足够了?

【问题讨论】:

    标签: unity-container


    【解决方案1】:

    这是因为直接通过调用操作符new来创建TestBroker:

    new TestBroker().RunTestBroker();
    

    为了统一解决您的依赖关系,您需要像这样调用框架:

    var broker = container.Resolve<TestBroker>();
    

    IUnityContainer 是将为您完成所有工作的接口 - 即将类型解析为实例。您只需要创建一次,然后将它传递给您需要它的应用程序。

    【讨论】:

    • 谢谢;我还需要在配置文件中映射TestBroker吗?
    • 是的,您确实需要将其添加到配置部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多