iAt*_*_it 17 c# dependency-injection inversion-of-control unity-container visual-studio-2010
这是我的dad
班级
public class Dad
{
public string Name
{
get;set;
}
public Dad(string name)
{
Name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试方法
public void TestDad()
{
UnityContainer DadContainer= new UnityContainer();
Dad newdad = DadContainer.Resolve<Dad>();
newdad.Name = "chris";
Assert.AreEqual(newdad.Name,"chris");
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误
"InvalidOperationException - the type String cannot be constructed.
You must configure the container to supply this value"
Run Code Online (Sandbox Code Playgroud)
如何配置我DadContainer
的断言传递?谢谢
p.s*_*w.g 28
你应该提供一个无参数的构造函数:
public class Dad
{
public string Name { get; set; }
public Dad()
{
}
public Dad(string name)
{
Name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不能提供无参数构造函数,则需要通过直接将其注册到容器来配置容器以提供它:
UnityContainer DadContainer = new UnityContainer();
DadContainer.RegisterType<Dad>(
new InjectionConstructor("chris"));
Run Code Online (Sandbox Code Playgroud)
或者通过app/web.config文件:
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity>
<containers>
<container>
<register type="System.String, MyProject">
<constructor>
<param name="name" value="chris" />
</constructor>
</register >
</container>
</containers>
</unity>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22078 次 |
最近记录: |