>

우리는 Prism (7.2.0.1422)과 Unity를 DI 컨테이너로 사용하는 WPF 애플리케이션을 보유하고 있습니다. Unity Property injection을 사용하려고하는 다음 클래스가 있습니다.

 public class LocalizedDescriptionAttribute : DescriptionAttribute
  {
    [Dependency]
    IStringResource _stringResource { get; set; }
    string _resourceKey;
    public LocalizedDescriptionAttribute(string resourceKey)
    {
        _resourceKey = resourceKey;
    }
    public override string Description
    {
        get
        {
            string description = _stringResource.GetString(_resourceKey);
            return string.IsNullOrWhiteSpace(description) ? string.Format("[[{ 0}]]", _resourceKey) : description;
         }
      }
  }
   _stringResource  is always null. I have registered the type as a singleton like this in RegisterTypes
     containerRegistry.RegisterSingleton<IStringResource, StringResource>();

어떤 아이디어라도 감사


  • 답변 # 1

    클래스 이름을 기준으로 실제 속성이라고 가정합니까? 어떤 것도 주입 할 수 없습니다 Unity 컨테이너는 자신을 생성하는 인스턴스에만 주입 할 수 있기 때문입니다.

    그러나 우회를 통해 속성 코드에서 컨테이너를 사용할 수 있습니다. CommonServiceLocator . 그것은 당신이해야 할 때만 사용하는 정적 클래스이며, 이것은 좋은 아이디어가되는 드문 경우 중 하나 일 수 있습니다. 당신은 그것을 해결하기 위해 사용할 수 있습니다 IStringResource 런타임에 컨테이너에서.

  • 이전 arrays - Swift에서 본문으로 루프가 포함 된 이메일 보내기
  • 다음 반응 네이티브에서 3 * 3 이미지 그리드의 4 테이블 셀을 병합하려고합니다