C# Unity IOC 在 App.conf 中注册新类型
C# Unity IOC register new types in App.conf
目前在我的 winforms 应用程序中,我的所有类型都在 Main
方法中注册。
我正在寻找解决方案如何在 App.conf
中注册所有新类型?
这可能吗?
我目前在我的应用中使用的是:
[STAThread]
static void Main(string[] args)
{
UnityContainer ioc = new UnityContainer();
// This move in app.conf
ioc.RegisterType<Customer>();
ioc.RegisterType<MainWindow>();
ioc.RegisterType<IDatabase, MySqlDatabase>();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(ioc.Resolve<MainWindow>());
}
可以在 app.config 中注册类型。我编写了简单的控制台应用程序来说明:
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
namespace MyNamespace
{
public interface ILogger
{ }
public class TheLogger : ILogger
{ }
class Program
{
private static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
container.LoadConfiguration();
var logger = container.Resolve<ILogger>();
}
}
}
和app.config(TheLoggerclass注册为ILogger的实现):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<namespace name="MyNamespace" />
<assembly name="MyApp" />
<container>
<register type="ILogger" mapTo="TheLogger" />
</container>
</unity>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
有关详细信息,请查看此 MSDN page。
目前在我的 winforms 应用程序中,我的所有类型都在 Main
方法中注册。
我正在寻找解决方案如何在 App.conf
中注册所有新类型?
这可能吗?
我目前在我的应用中使用的是:
[STAThread]
static void Main(string[] args)
{
UnityContainer ioc = new UnityContainer();
// This move in app.conf
ioc.RegisterType<Customer>();
ioc.RegisterType<MainWindow>();
ioc.RegisterType<IDatabase, MySqlDatabase>();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(ioc.Resolve<MainWindow>());
}
可以在 app.config 中注册类型。我编写了简单的控制台应用程序来说明:
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
namespace MyNamespace
{
public interface ILogger
{ }
public class TheLogger : ILogger
{ }
class Program
{
private static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
container.LoadConfiguration();
var logger = container.Resolve<ILogger>();
}
}
}
和app.config(TheLoggerclass注册为ILogger的实现):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<namespace name="MyNamespace" />
<assembly name="MyApp" />
<container>
<register type="ILogger" mapTo="TheLogger" />
</container>
</unity>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
有关详细信息,请查看此 MSDN page。