【发布时间】:2014-09-09 04:14:45
【问题描述】:
我的 Unity DI 容器最初与我的 Windows 窗体应用程序一起工作。当我运行我的程序时,Microsoft.Practices.Unity.dll 中发生了一个未处理的类型为“System.StackOverflowException”的异常。我在这段代码中的错误是什么?怎么解决?
public static class Program
{
private static void Main()
{
var container = BuildUnityContainer();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(container.Resolve<Form1>());
}
public static IUnityContainer BuildUnityContainer()
{
var currentContainer = new UnityContainer() ;
currentContainer.RegisterType<IUserViewPresenter, UserViewPresenter>();
currentContainer.RegisterType<IUserView, Form1>();
return currentContainer;
}
}
public partial class Form1 : Form, IUserView
{
private readonly IUserViewPresenter _presenter;
public Form1(IUserViewPresenter presenter)
{
_presenter = presenter;
InitializeComponent();
}
public string FirstName
{
get { return firstName.Text; }
set { firstName.Text = value; }
}
public string LastName
{
get { return lastName.Text; }
set { lastName.Text = value; }
}
}
public interface IUserView
{
string FirstName { set; get; }
string LastName { set; get; }
}
public class UserViewPresenter : IUserViewPresenter
{
readonly IUserView _view;
public UserViewPresenter(IUserView view)
{
_view = view;
}
public void Save()
{
_view.FirstName = "Arman";
_view.LastName = "Arian";
}
}
public interface IUserViewPresenter
{
void Save();
}
【问题讨论】:
-
为什么不 Application.Run(container.Resolve
());? -
更多信息请查看stacktrace...unity真的很难看到异常需要查看stacktrace...
标签: c# winforms dependency-injection unity-container mvp