我有 WinForm 应用程序,我想使用 ServiceStack 依赖注入机制:
public class AppHost : AppHostBase
{
public AppHost()
: base("MyName", typeof(AppHost).Assembly)
{
}
public override void Configure(Container container)
{
container.RegisterAutoWiredAs<AppApplicationContext, IAppApplicationContext>();
}
}
然后在某种形式的类中使用它:
public class SomeClass : AppBaseForm
{
public IAppApplicationContext AppApplicationContext { get; set; }
public SomeClass(IAppApplicationContext appApplicationContext)
{
AppApplicationContext = appApplicationContext;
}
public SomeClass()
{
}
}
但AppApplicationContext
总是null
。在无参数构造函数中我写:
AppApplicationContext = AppHostBase.Resolve<IAppApplicationContext>();
然后一切正常。但这是正确的方法吗?我的意思是 AppApplicationContext 不应该由 IoC 自动解决?并且 WinForm 必须有无参数的构造函数。
其余代码:
private static void Main()
{
var appHost = new AppHost();
appHost.Init();
}
public interface IAppApplicationContext
{
}
public class AppApplicationContext : IAppApplicationContext
{
}