zoukankan      html  css  js  c++  java
  • unity--IOC框架资料整理

    今天在网上找了一些unity资料研究,出了好多问题,编译无法通过,经人指点总算成功编译运行,做个笔记,整理如下:

    一、下载unity

    二、在项目中添加Microsoft.Practices.Unity.dll和Microsoft.Practices.Unity.Configuration.dll的引用;

    三、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 alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager,Microsoft.Practices.Unity"></alias>
        <alias alias="ISayHello2" type="TestUnity.ISayHello2,TestUnity"></alias>
        <alias alias="SayHello2Think" type="TestUnity.SayHello2Think,TestUnity"></alias>
        <alias alias="SayHello2ACloud" type="TestUnity.SayHello2ACloud,TestUnity"></alias>
        <alias alias="ISingletonDemo" type="TestUnity.ISingletonDemo,TestUnity"></alias>
        <alias alias="SingletonDemoImp1" type="TestUnity.SingletonDemoImp1,TestUnity"></alias>
        <container name="TestUnity">
          <register type="ISayHello2" mapTo="SayHello2Think" name="think"/>
          <register type="ISayHello2" mapTo="SayHello2ACloud" name="aCloud"/>
          <register type="ISingletonDemo" mapTo="SingletonDemoImp1" name="singletonDemoImp1">
          </register>
        </container>
      </unity>
    </configuration>
    

      Unity的配置节的名称为”Unity",节处理程序的类型为 Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,它包含在程序集 Microsoft.Practices.Unity.Configuration 中;

          name:在注册此类型时使用的名称。此属性是可选的,如果不指定此属性,所在的 add 元素即为默认的类型映射。 

          type:容器中配置的源类型。如果这是映射注册,这就是映射的起始对象的类型;如果这是单件注册,这就是对象的类型。此属性是必须的。 

          mapTo:类型映射的目标类型。如果这是映射注册,这就是映射的目标对象的类型。此属性是可选的。 

           lifetime:设置用于给定的类型和名称的生命周期。是一个来自 LifetimeStyle 枚举的值。有效的值是 Transient(默认),它导致了容器每次都创建一个新的实例;以及Singleton,它使容器为每个请求返回同一实例。如果在配置一个单件时同时指定了type和mapto属性,SetSingleton 方法将返回指定在 mapTo 属性中的类型。如果mapTo属性没有指定值,SetSingleton 方法将返回指定在 type 属性中的类型。

    四、新建一个项目,在里面加入如下几个文件:

    ISayHello2.cs

        public interface ISayHello2
        {
            
    string SayHello();
        }

    SayHello2Think8848.cs

        public class SayHello2Think8848 : ISayHello2
        {
            
    #region ISayHello2 成员

            
    public string SayHello()
            {
                
    return "Hello think8848!";
            }

            
    #endregion
        }

    SayHello2ACloud.cs

     
        public class SayHello2ACloud : ISayHello2
        {
            
    #region ISayHello2 成员

            
    public string SayHello()
            {
                
    return "Hello aCloud!";
            }

            
    #endregion
        }
     

    ISingletonDemo.cs

        public interface ISingletonDemo
        {
            DateTime GetInitTime();
        }

    SingletonDemoImpl.cs

        public class SingletonDemoImpl : ISingletonDemo
        {
            
    private DateTime time;

            
    public SingletonDemoImpl()
            {
                
    this.time = DateTime.Now;
            }

            
    #region ISingletonDemo 成员

            
    public DateTime GetInitTime()
            {
                
    return this.time;
            }

            
    #endregion
        }

    五、Main方法如下:

     static void Main()
      {
                 UnityContainer myContainer=new UnityContainer();
                UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
                section.Configure(myContainer, "TestUnity");
             //   section.Containers["TestUnity"].Configure(myContainer);
                ISayHello2 sayHello2ACloud = myContainer.Resolve<ISayHello2>("aCloud");
                Console.WriteLine(sayHello2ACloud.sayHello());
    
    }
    

      

  • 相关阅读:
    后缀数组
    网络流 HOJ1087
    备用
    css-具有缩略图的材料列表
    正则匹配log行
    vue-cli的webpack打包,icon无法正确加载
    导出CSV,导出excel数字过长显示科学计数法解决方案
    js导出CSV
    git常见操作指令
    javascript原型的意义
  • 原文地址:https://www.cnblogs.com/dongyang/p/3310292.html
Copyright © 2011-2022 走看看