如何使用Unity使用[Dependency]属性注入实例?

时间:2016-12-29 23:22:02

标签: c# asp.net dependency-injection unity-container

我在ASP.NET C#中使用Unity进行依赖注入。

通常我会在构造函数中注入依赖项,例如:

class MyClass
{
   private readonly ISomething _something;

   public MyClass(ISomething something)
   {
      _something = something;
   }

   public MyMethod()
   {
      // _something is instantiated as expected
   }
}

其中依赖项已配置为:

container.RegisterType<ISomething, Something>();

这一切都很棒。

但是现在我需要在不使用构造函数的情况下进行注入。所以我读到我可以为此目的使用依赖属性[Dependency]。

class MyClass
{
   [Dependency]
   private ISomething _something { get; set; }

   public MyMethod()
   {
      // _something appears to be null
   }
}

但由于某种原因_something似乎是空的。

我错过了什么?

SOLUTION:

请参阅此处接受的答案,其中显示了如何创建工厂以生成注入的实例:

How to resolve dependency in static class with Unity?

为我工作!

1 个答案:

答案 0 :(得分:0)

您正试图注入私人财产。这是不可能的。

就个人而言,我建议您坚持使用构造函数注入来防止将自己锁定到特定的依赖注入框架中。