我是 Microsoft Unity Container 的新手,所以我的问题可能很简单。我必须为只有一个无参数构造函数的类注册和解析实例。现在我想学习如何使用简单的构造函数注册和解析一个类。这是我的课。
public class MyClass
{
private string a1;
public string A1
{
get { return a1; }
set { a1 = value; }
}
private int a2;
public int A2
{
get { return a2; }
set { a2 = value; }
}
public MyClass()
{ this.a1 = "aaaaa";
this.a2 = 1;
}
public MyClass(string a1,int a2)
{
this.a1 = a1;
this.a2 = a2;
}
}
我必须注册并解析 MyClass() 构造函数;然后,我尝试注册第二个
//App.xaml.cs
container = new UnityContainer();
container.RegisterType<MainView>();
............
container.RegisterType<string>("A1");
container.RegisterType<int>("A2");
container.RegisterType<MyClass>("MyClassConstructor",new InjectionConstructor(new ResolvedParameter<string>("A1"),new ResolvedParameter<int>("A2")));
//NavigationService.cs, create an instance of MyClass("mystring",100) and bind it to a window
public Window ShowMainView()
{
var window = Container.Resolve<MainView>();
MyClass myClass = Container.Resolve<MyClass>("MyClassConstructor", new ParameterOverrides { { "A1", "mystring" }, { "A2", 100 } });
window.DataContext = myClass ;
window.Show();
return window;
}
当容器尝试创建 MyClass 实例时,出现此错误:
依赖项解析失败,type = "MySolution.MyProject.ViewModels.MyClass",name = "MyClassConstructor"。异常发生时:解决时。
异常是: InvalidOperationException - 无法构造类型 String。您必须配置容器以提供此值。
在异常发生时,容器是:
解析 MySolution.MyProject.ViewModels.MyClass,MyClassConstructor 解析构造函数 MySolution.MyProject.ViewModels.MyClass(System.String a1, System.Int32 a2) 的参数“a1” 解析 System.String,A1
请帮助我了解它是如何工作的。谢谢