配置文件app.config,其中的<configSections>配置节内的信息是必加的,不然载入会出错
View Code
<?xml version="1.0"?> <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 alias="IValueProvider" type="Common.IValueProvider,Common"/> <container name="ValueProviders"> <register type="IValueProvider" name="Memery" mapTo="ValueProviders.MemeryProvider,ValueProviders"/> <register type="IValueProvider" name="Viedo" mapTo="ValueProviders.VideoCardProvider,ValueProviders"/> <register type="IValueProvider" name="Date" mapTo="ValueProviders.DateProvider,ValueProviders"/> <register type="IValueProvider" name="Name" mapTo="ValueProviders.NameProvider,ValueProviders"/> </container> </unity> <startup> <supportedRuntime version="v2.0.50727"/> </startup> </configuration>
在Common程序集中的接口:
public interface IValueProvider { string GetValue(object key); }
在ValueProviders程序集中的其中一个接口实例:
public class DateProvider:IValueProvider { public string GetValue(object key) { return DateTime.Now.ToShortDateString(); } }
调用方法:
UnityContainer container = new UnityContainer(); container.LoadConfiguration("ValueProviders"); var provider= container.Resolve<Common.IValueProvider>("Viedo"); provider.GetValue(null);
如果不带参数,直接LoadConfiguration,会载入名称为”“或者没有name属性的container配置节,如果都没有会报错