0

プロパティを挿入しようとしている単純なオブジェクトがあります。なぜこれが機能していないように見えるのかわかりません。resolveを呼び出した後、プロパティがnullになってしまいます。

これが私の目的です:

public interface IBasePage
{
    [Dependency]
    string Title { get; set; }

    [Dependency]
    string BaseUrl { get; set; }
}

これは私のUnity設定ファイルにあるものです:

<register type="IWebActionDriver" mapTo="ConcreteWebDriver"/>

<register type="IBasePage" name="LoginPage" mapTo="LoginPage">
    <property name="Title" value="Login Page Title"/>
    <property name="BaseUrl" value="http://dev1.company.com"/>
  </register>

私の単体テストの起動方法では、これが私がやろうとしていることです:

_container = new UnityContainer();
        UnityConfigurationSection configSection =
            (UnityConfigurationSection) ConfigurationManager.GetSection("unity");

 configSection.Configure(_container, "testContainer");
 _page = _container.Resolve<LoginPage>();

私の具体的なクラスは次のようになります。

[InjectionConstructor]
public LoginPage(IWebActionDriver driver)
    {
        _driver = driver;
        _driver.Initialize();

        this.CurrentPage = _driver;
    }

見よ、TitleとBaseUrlのプロパティはnullです。オブジェクトにコンストラクタインジェクションとセットプロパティの両方を使用しても大丈夫ですか?私はここで何か奇妙なことをしていますか?

4

2 に答える 2

1

LoginPageは、名前付き登録として登録されます(これは、明らかに複数のIBasePage具象型を持つことができるため意味があります)。したがって、IBasePageを次の名前で解決することで、必要な動作を実現できるはずです。

_page = _container.Resolve<IBasePage>("LoginPage");

于 2012-08-13T20:42:46.517 に答える
0

次のように、名前空間とアセンブリ名を構成ファイルに含める必要があります。

 <namespace name="MyNameSpace" />
 <assembly name="MyAssemblyName" />
于 2012-08-13T20:43:41.803 に答える