当前位置: 首页>>代码示例>>C#>>正文


C# IMessageBroker.Subscribe方法代码示例

本文整理汇总了C#中IMessageBroker.Subscribe方法的典型用法代码示例。如果您正苦于以下问题:C# IMessageBroker.Subscribe方法的具体用法?C# IMessageBroker.Subscribe怎么用?C# IMessageBroker.Subscribe使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IMessageBroker的用法示例。


在下文中一共展示了IMessageBroker.Subscribe方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Subscribe

		void Subscribe( IContainer container, IMessageBroker broker, Guid key, Bag bag, Type genericHandler, InvocationModel invocationModel )
		{
			var messageType = genericHandler.GetGenericArguments().Single();

			logger.Debug
			(
				"\tSubscribing to message: {0}",
				messageType.ToString( "SN" )
			);

			if ( genericHandler.Is<IMessageHandler>() )
			{
				broker.Subscribe( this, messageType, invocationModel, msg =>
				{
					var handler = container.Resolve( bag.Services.FirstOrDefault() ) as IMessageHandler;
					if ( handler != null )
					{
						logger.Debug
						(
							"Dispatching message {0} to IMessageHandler {1}",
								msg.GetType().ToString( "SN" ),
								handler.GetType().ToString( "SN" )
						);

						if ( handler.ShouldHandle( msg ) )
						{
							handler.Handle( msg );
						}
					}
					else
					{
						logger.Debug
						(
							"IMessageHandler for {0} is null.",
							msg.GetType().ToString( "SN" )
						);
					}
				} );
			}
			else if ( genericHandler.Is<IHandleMessage>() )
			{
				broker.Subscribe( this, messageType, invocationModel, ( s, msg ) =>
				{
					var handler = container.Resolve( bag.Services.FirstOrDefault() ) as IHandleMessage;
					if ( handler != null )
					{
						logger.Debug
						(
							"Dispatching message {0} to IHandleMessage {1}",
								msg.GetType().ToString( "SN" ),
								handler.GetType().ToString( "SN" )
						);

						if ( handler.ShouldHandle( s, msg ) )
						{
							handler.Handle( s, msg );
						}
					}
					else
					{
						logger.Debug
						(
							"IHandleMessage for {0} is null.",
							msg.GetType().ToString( "SN" )
						);
					}
				} );
			}
		}
开发者ID:micdenny,项目名称:Radical.Windows.Presentation.Autofac,代码行数:69,代码来源:SubscribeToMessageModule.cs

示例2: Subscribe

        void Subscribe( IMessageBroker broker, String key, IHandler h, Type genericHandler, InvocationModel invocationModel )
        {
            /*
             * Qui abbiamo un problema di questo tipo: quando in Castle viene
             * registrato un componente per più di un servizio, ergo per più 
             * interfacce vogliamo venga risolto lo stesso tipo, abbiamo l'inghippo
             * che Castle registra n componenti che risolvono verso lo stesso tipo
             * tante quante sono le interfacce. Quindi l'evento qui registrato viene
             * scatenato n volte e siccome il primo test che noi facciamo è verificare
             * che il servizio sia IMessageHandler se un componente gestisce n messaggi
             * arriviamo qui n volte. Se il componente inoltre richiede la Subscribe
             * automatica per quei messaggi, ha quindi più di un SubscribeToMessageAttribute
             * dobbiamo assicurarci che la subscribe venga fatta una ed una sola volta.
             * per ogni tipo di messaggio.
             */
            var messageType = genericHandler.GetGenericArguments().Single(); // attribute.MessageType;

            logger.Debug
            (
                "\tSubscribing to message: {0}",
                messageType.ToString( "SN" )
            );

            if ( genericHandler.Is<IMessageHandler>() )
            {
                broker.Subscribe( this, messageType, invocationModel, msg =>
                {
                    if ( this.Kernel != null )
                    {
                        var handler = this.Kernel.Resolve( key, h.ComponentModel.Services.First() ) as IMessageHandler;
                        if ( handler != null )
                        {
                            logger.Debug
                            (
                                "Dispatching message {0} to IMessageHandler {1}",
                                msg.GetType().ToString( "SN" ),
                                handler.GetType().ToString( "SN" )
                            );

                            if ( handler.ShouldHandle( msg ) )
                            {
                                handler.Handle( msg );
                            }
                        }
                        else
                        {
                            logger.Debug
                            (
                                "IMessageHandler for {0} is null.",
                                msg.GetType().ToString( "SN" )
                            );
                        }
                    }
                    else
                    {
                        logger.Debug( "Kernel is null." );
                        logger.Debug( "Kernel is null." );
                    }
                } );
            }
            else if ( genericHandler.Is<IHandleMessage>() )
            {
                broker.Subscribe( this, messageType, invocationModel, ( s, msg ) =>
                {
                    if ( this.Kernel != null )
                    {
                        var handler = this.Kernel.Resolve( key, h.ComponentModel.Services.First() ) as IHandleMessage;
                        if ( handler != null )
                        {
                            logger.Debug
                            (
                                "Dispatching message {0} to IHandleMessage {1}",
                                msg.GetType().ToString( "SN" ),
                                handler.GetType().ToString( "SN" )
                            );

                            if ( handler.ShouldHandle( s, msg ) )
                            {
                                handler.Handle( s, msg );
                            }
                        }
                        else
                        {
                            logger.Debug
                            (
                                "IHandleMessage for {0} is null.",
                                msg.GetType().ToString( "SN" )
                            );
                        }
                    }
                    else
                    {
                        logger.Debug( "Kernel is null." );
                    }
                } );
            }
        }
开发者ID:micdenny,项目名称:Radical.Windows.Presentation.CastleWindsor,代码行数:97,代码来源:SubscribeToMessageFacility.cs

示例3: Subscribe

		void Subscribe( IMessageBroker broker, String key, RegisterEventArgs h, Type genericHandler, InvocationModel invocationModel )
		{
			var messageType = genericHandler.GetGenericArguments().Single();

			logger.Debug
			(
				"\tSubscribing to message: {0}",
				messageType.ToString( "SN" )
			);

			if ( genericHandler.Is<IMessageHandler>() )
			{
				broker.Subscribe( this, messageType, invocationModel, msg =>
				{
					if ( this.Container != null )
					{
						var handler = this.Container.Resolve( h.TypeFrom, key ) as IMessageHandler;
						if ( handler != null )
						{
							logger.Debug
							(
								"Dispatching message {0} to IMessageHandler {1}",
									msg.GetType().ToString( "SN" ),
									handler.GetType().ToString( "SN" )
							);

							if ( handler.ShouldHandle( msg ) )
							{
								handler.Handle( msg );
							}
						}
						else
						{
							logger.Debug
							(
								"IMessageHandler for {0} is null.",
								msg.GetType().ToString( "SN" )
							);
						}
					}
					else
					{
						logger.Debug( "Kernel is null." );
						logger.Debug( "Kernel is null." );
					}
				} );
			}
			else if ( genericHandler.Is<IHandleMessage>() )
			{
				broker.Subscribe( this, messageType, invocationModel, ( s, msg ) =>
				{
					if ( this.Container != null )
					{
						var handler = this.Container.Resolve( h.TypeFrom, key ) as IHandleMessage;
						if ( handler != null )
						{
							logger.Debug
							(
								"Dispatching message {0} to IHandleMessage {1}",
									msg.GetType().ToString( "SN" ),
									handler.GetType().ToString( "SN" )
							);

							if ( handler.ShouldHandle( s, msg ) )
							{
								handler.Handle( s, msg );
							}
						}
						else
						{
							logger.Debug
							(
								"IHandleMessage for {0} is null.",
								msg.GetType().ToString( "SN" )
							);
						}
					}
					else
					{
						logger.Debug( "Kernel is null." );
					}
				} );
			}
		}
开发者ID:micdenny,项目名称:Radical.Windows.Presentation.Unity3,代码行数:84,代码来源:SubscribeToMessageExtension.cs


注:本文中的IMessageBroker.Subscribe方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。