0
using Microsoft.Practices.Unity;   
..
..
public class ContentsController : BaseController
{
    [Dependency]
    public IContentService contentService { get; set; }

}

我正在使用 Unity 给我一个 IContentService 实例。但是,只有当我将其声明为公开时,它才会起作用。如果我声明私有,那么它 _cs 是否为空?

我可以通过将其声明为 public 来使其工作的唯一方法吗?

我可以在控制器构造函数中声明 IContentService 吗?如果我这样做了,那么有人可以向我展示最佳语法以及如何将其连接到私有变量吗?

4

2 回答 2

1

这里已经有了答案: Unity 框架 DependencyAttribute 仅适用于公共属性? 您必须将变量声明为 public 以使该属性按您期望的方式工作。

于 2012-05-31T04:55:53.700 回答
1

至于关于构造函数注入的部分:

public class ContentsController : BaseController
{
  private readonly IContentService service;
  public ContentsController(IContentService service)
  {
    if(service == null) throw new ArgumentNullException("service");
    this.service = service;
  }
}

var container = new UnityContainer();
container.RegisterType<IContentService, MyContentService>();
var controller = container.Resolve<ContentsController>();
于 2012-05-31T05:32:36.927 回答