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

}

Unity を使用して IContentService のインスタンスを提供しています。ただし、これが公開されていると宣言した場合にのみ機能します。プライベートを宣言すると、_cs は null になりますか?

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 に答える