Exemplo n.º 1
0
        static void Main(string[] args)
        {
            IUnityContainer container = new UnityContainer();

            container.RegisterTypes(
                AllClasses.FromLoadedAssemblies().Where(x => x.Namespace.Contains("UnityAutoRegistration")),
                WithMappings.FromAllInterfaces,
                WithName.Default,
                WithLifetime.ContainerControlled);

            IMyMessage message = container.Resolve <IMyMessage>();

            message.Write("Vulcan");

            Console.WriteLine();
            foreach (var item in container.Registrations)
            {
                if (item.MappedToType.Name == item.RegisteredType.Name)
                {
                    continue;
                }
                Console.WriteLine($"Name : {item.Name}");
                Console.WriteLine($"RegisteredType : {item.RegisteredType.Name}");
                Console.WriteLine($"MappedToType : {item.MappedToType.Name}");
                Console.WriteLine($"LifetimeManager : {item.LifetimeManager.LifetimeType.Name}");
                Console.WriteLine();
            }

            Console.WriteLine("Press any key for continuing...");
            Console.ReadKey();
        }
 public void Send(IMyMessage message)
 {
     foreach (var listener in _list)
     {
         listener.HandleMessage(message);
     }
 }
 public void HandleMessage(IMyMessage message)
 {
     if (!(message is T))
     {
         throw new InvalidOperationException();
     }
     HandleMessage((T)message);
 }
Exemplo n.º 4
0
 private async static void DuplexSample()
 {
     WSDualHttpBinding binding = new WSDualHttpBinding();
     var        address        = new EndpointAddress("http://localhost:8733/Design_Time_Addresses/MessageService/MessageService/");
     var        context        = new InstanceContext(new ClientCallBack());
     var        factory        = new DuplexChannelFactory <IMyMessage>(context, binding, address);
     IMyMessage message        = factory.CreateChannel();
     await Task.Run(() => { message.MessageToServer("from the server"); });
 }
Exemplo n.º 5
0
 private static async void DuplexSample()
 {
     var        binding        = new WSDualHttpBinding();
     var        address        = new EndpointAddress("http://localhost:8733/Design_Time_Addresses/MessageService/Service1/");
     var        clientCallback = new ClientCallback();
     var        context        = new InstanceContext(clientCallback);
     var        factory        = new DuplexChannelFactory <IMyMessage>(context, binding, address);
     IMyMessage messageChannel = factory.CreateChannel();
     await Task.Run(() => messageChannel.MessageToServer("From the server"));
 }
Exemplo n.º 6
0
        static void Main()
        {
            Console.WriteLine("Client - wait for service");
            Console.ReadLine();

            var binding = new WSDualHttpBinding();
            var address =
                new EndpointAddress("http://localhost:8732/Design_Time_Addresses/MessageService/Service1/");

            var clientCallback = new ClientCallback();
            var context        = new InstanceContext(clientCallback);

            var factory = new DuplexChannelFactory <IMyMessage>(context, binding, address);

            IMyMessage messageChannel = factory.CreateChannel();

            messageChannel.MessageToServer("From the client");

            Console.WriteLine("Client - press return to exit");
            Console.ReadLine();
        }
Exemplo n.º 7
0
        static void Main(string[] args)
        {
            // 自動掃描所指定的組件內容,根據不同引數設定,自動掃描組件內的所有型別,
            // 進而判斷與加入抽象介面型別與具體實作類別的對應關係,並且使用預設的注入物件生命週期
            IUnityContainer container = new UnityContainer();

            container.RegisterTypes(
                AllClasses.FromLoadedAssemblies().Where(x => x.Namespace.Contains("UnityAutoRegistration")),
                WithMappings.FromAllInterfaces,
                WithName.Default,
                WithLifetime.ContainerControlled);

            // 進行抽象型別的具體實作物件的解析
            IMyMessage message = container.Resolve <IMyMessage>();

            // 執行取得物件的方法
            message.Write("Vulcan");

            Console.WriteLine();
            Console.WriteLine("顯示 IoC 容器中的所有型別對應");
            // 使用 IUnityContainer.Registrations 屬性值,
            // 來查看究竟有那些抽象型別與具體實作類別對應關係,加入到 DI Container 內呢?
            foreach (var item in container.Registrations)
            {
                if (item.MappedToType.Name == item.RegisteredType.Name)
                {
                    continue;
                }
                Console.WriteLine($"Name : {item.Name}");
                Console.WriteLine($"RegisteredType : {item.RegisteredType.Name}");
                Console.WriteLine($"MappedToType : {item.MappedToType.Name}");
                Console.WriteLine($"LifetimeManager : {item.LifetimeManager.LifetimeType.Name}");
                Console.WriteLine();
            }

            Console.WriteLine("Press any key for continuing...");
            Console.ReadKey();
        }
Exemplo n.º 8
0
 private static void Send(IMyMessage x, BaseEventData y)
 {
     x.Message1();
     Debug.Log("From Sender");
 }
 public void AddMessage(IMyMessage message)
 {
     this.messages.Add(message);
 }
Exemplo n.º 10
0
 public static void Build(IMyMessage message) /* ... */ }
Exemplo n.º 11
0
 void IMyMessageReceiver.HandleMessage(IMyMessage message)
 {
     HandleMessage(message as T);
 }