我是第一次使用任何名为 unity app block 的 DI 框架。我收到错误。错误是:-
无法解析类型名称或别名 ILogger。请检查您的配置文件并验证此类型名称。
我试图从外部将依赖注入到我的主要项目中。假设我想通过依赖将数据保存到任何地方。假设我想将数据保存到文件或控制台、数据库等。
在这里,我将告诉您我如何开发我的应用程序以整合 Unity。
首先我创建了一个名为“Ilogger”的类库项目,它只有一个接口。该接口的完整代码
namespace Ilogger
{
public interface ILog
{
void Write(string msg);
}
}
其次,我创建了一个名为“ConsoleWriter”的类库项目,它只有一个继承 Ilogger 接口的类。所以我只是将 Ilogger 项目的引用添加到 ConsoleWriter 项目中。此 ConsoleWriter 的完整代码
namespace ConsoleWriter
{
public class ConsoleWriter : Ilogger.ILog
{
#region ILog Members
public void Write(string msg)
{
Console.WriteLine(msg);
Console.ReadLine();
}
#endregion
}
}
第三步我创建了一个名为“FileWriter”的类库项目,它只有一个继承Ilogger接口的类。所以我只是将Ilogger项目的引用添加到FileWriter proj中。此 FileWriter 的完整代码
namespace FileWriter
{
public class FileWriter : Ilogger.ILog
{
#region IWriter Members
public void Write(string msg)
{
using (StreamWriter streamWriter = new StreamWriter("c:\\TestUnity.txt", true))
{
streamWriter.WriteLine(msg);
}
}
#endregion
}
}
接下来我创建我的 win 应用程序,在运行时注入依赖项。在这个项目中,我添加了一些统一块的 dll 引用,这些都是。
Microsoft.Practices.Unity
Microsoft.Practices.Unity.Configuration
system.configuration
我添加了一个 app.config 文件,它有类似的条目
<?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">
<alias type="ILogger.ILog, ILogger" alias="ILogger" />
<namespace name="ILogger.ILog"/>
<container>
<register mapTo="FileWriter.FileWriter, FileWriter" name="MyFileWriter" type="ILogger"/>
<register mapTo="ConsoleWriter.ConsoleWriter, ConsoleWriter" name="MyConsoleWriter" type="ILogger"/>
</container>
</unity>
</configuration>
这是引发错误的主要代码
字符串 strCountryCode = "美国";
IDictionary<string, string> loggers = new Dictionary<string, string>();
loggers.Add("USA", "MyFileWriter");
loggers.Add("GBR", "MyConsoleWriter");
IUnityContainer container = new UnityContainer();
UnityConfigurationSection section = (UnityConfigurationSection)System.Configuration.ConfigurationManager.GetSection("unity");
//container.LoadConfiguration();
section.Containers.Default.Configure(container);
Ilogger.ILog logger = container.Resolve<Ilogger.ILog>(loggers[strCountryCode]);
logger.Write("Hello World");
这一行给出错误section.Containers.Default.Configure(container);
我第一次使用 DI 框架统一,所以我无法发现我犯了什么错误。所以请任何人帮助我解决错误并告诉我如何解决它。
谢谢