当前位置: 代码迷 >> .NET相关 >> unity 三种流入示例
  详细解决方案

unity 三种流入示例

热度:471   发布时间:2016-04-24 02:59:02.0
unity 三种注入示例
  1 /*  2  * 演示Unity 注入  3  * */  4 using Microsoft.Practices.Unity;  5 using System;  6   7 namespace Unity.Property.Inject  8 {  9     class Program 10     { 11         public static IUnityContainer container; 12  13         static void Main(string[] args) 14         { 15             container = new UnityContainer(); 16  17             //PropertyInject(); 18             //ConstructorInject(); 19             MethodInject(); 20  21             Console.ReadLine(); 22         } 23  24         /// <summary> 25         /// 构造注入 26         /// </summary> 27         static void ConstructorInject() 28         { 29             Console.WriteLine("构造注入"); 30             container.RegisterType<ILog, ALog>(); 31             //container.RegisterType<ILog, BLog>(); 32  33             container.RegisterType<IPeople, Man>(); 34             //container.RegisterType<IPeople, Woman>(); 35  36             var people = container.Resolve<IPeople>(); 37             people.Print2(); 38         } 39  40         /// <summary> 41         /// 属性注入 42         /// </summary> 43         static void PropertyInject() 44         { 45             Console.WriteLine("属性注入"); 46             //通过Register不同的ILog的派生类型,达到用不同的日志组件进行打印 47  48             //container.RegisterType<ILog, ALog>(); 49             container.RegisterType<ILog, BLog>(); 50  51             container.RegisterType<IPeople, Man>(); 52             //container.RegisterType<IPeople, Woman>(); 53  54             var people = container.Resolve<IPeople>(); 55             people.Print(); 56         } 57  58         static void MethodInject() 59         { 60             Console.WriteLine("函数注入"); 61             //通过Register不同的ILog的派生类型,达到用不同的日志组件进行打印 62  63             //container.RegisterType<ILog, ALog>(); 64             container.RegisterType<ILog, BLog>(); 65  66             container.RegisterType<IPeople, Man>(); 67             //container.RegisterType<IPeople, Woman>(); 68  69             var people = container.Resolve<IPeople>(); 70             people.Logger.Write("函数注入 " + people.Logger != null ? "成功" : "失败"); 71         } 72     } 73  74     public interface IPeople 75     { 76         /// <summary> 77         /// 属性注入用 78         /// </summary> 79         ILog Logger { get; set; } 80  81         /// <summary> 82         /// 构造注入用 83         /// </summary> 84         ILog Logger2 { get; set; } 85  86         String Name { get; set; } 87  88         String Sex { get; set; } 89  90         /// <summary> 91         /// 属性注入用 92         /// </summary> 93         void Print(); 94  95         /// <summary> 96         /// 构造注入用 97         /// </summary> 98         void Print2(); 99 100         /// <summary>101         /// 函数注入用102         /// </summary>103         void Print3(ILog logger);104     }105 106     public class Man : IPeople107     {108         [Dependency]109         public ILog Logger { get; set; }110         public ILog Logger2 { get; set; }111 112         public string Name { get; set; }113 114         public string Sex { get; set; }115 116         public Man(ILog logger2) { this.Logger2 = logger2; }117 118         public void Print()119         {120             Logger.Write(base.ToString());121         }122 123         public void Print2()124         {125             Logger.Write(base.ToString());126         }127 128         [InjectionMethod]129         public void Print3(ILog logger)130         {131             this.Logger = logger;132         }133     }134 135     public class Woman : IPeople136     {137 138         [Dependency]139         public ILog Logger { get; set; }140         public ILog Logger2 { get; set; }141 142         public string Name { get; set; }143 144         public string Sex { get; set; }145 146         public Woman(ILog logger2) { this.Logger2 = logger2; }147 148         public void Print()149         {150             Logger.Write(base.ToString());151         }152 153         public void Print2()154         {155             Logger.Write(base.ToString());156         }157 158         [InjectionMethod]159         public void Print3(ILog logger)160         {161             this.Logger = logger;162         }163     }164 165 166     public interface ILog167     {168         void Write(String msg);169     }170 171     public class ALog : ILog172     {173         public void Write(String msg) { Console.WriteLine("[A] {0}", msg); }174     }175 176     public class BLog : ILog177     {178         public void Write(String msg) { Console.WriteLine("[B] {0}", msg); }179     }180 }

 

  相关解决方案