本文整理汇总了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" )
);
}
} );
}
}
示例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." );
}
} );
}
}