本文整理汇总了C#中MessageBus.Register方法的典型用法代码示例。如果您正苦于以下问题:C# MessageBus.Register方法的具体用法?C# MessageBus.Register怎么用?C# MessageBus.Register使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MessageBus
的用法示例。
在下文中一共展示了MessageBus.Register方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestUnregisterOneAction
public void TestUnregisterOneAction()
{
const string testContentA1 = "abcd";
const string testContentA2 = "efgh";
Reset();
IMessageBus messageBus = new MessageBus();
Action<TestMessageA> actionA1 = m => ReceivedContentStringA1 = m.Content;
messageBus.Register(this, TestConstants.MyContentToken, actionA1);
Assert.AreEqual(null, ReceivedContentStringA1);
messageBus.Send(new TestMessageA
{
Content = testContentA1
}, TestConstants.MyContentToken);
Assert.AreEqual(testContentA1, ReceivedContentStringA1);
messageBus.Unregister(this, TestConstants.MyContentToken, actionA1);
messageBus.Send(new TestMessageA
{
Content = testContentA2
}, TestConstants.MyContentToken);
Assert.AreNotEqual(testContentA2, ReceivedContentStringA1);
}
示例2: InnerListHasOneItemAfterUnregisterIsCalledForSpecificActionWhereTwoActionsRegisteredForOneToken
public void InnerListHasOneItemAfterUnregisterIsCalledForSpecificActionWhereTwoActionsRegisteredForOneToken()
{
const string testContent1 = "efgh";
const string testContent2 = "mnop";
const int token = 4567;
Reset();
IMessageBus messageBus = new MessageBus();
Action<string> action1 = m => ReceivedContentStringA = m;
Action<string> action2 = m => ReceivedContentStringB = m;
messageBus.Register(this, token, action1);
messageBus.Register(this, token, action2);
messageBus.Send(testContent1, token);
Assert.AreEqual(testContent1, ReceivedContentStringA);
Assert.AreEqual(testContent1, ReceivedContentStringB);
messageBus.Unregister(this, token, action2); // only unregister action2. Leave action1.
var type = typeof(MessageBus);
// _commandCollection is an instance, private member
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
// Retrieve a FieldInfo instance corresponding to the field
FieldInfo field = type.GetField("_recipientsStrictAction", flags);
var innerRecipientsDictionary = field.GetValue(messageBus) as Dictionary<Type, List<MessageBus.WeakActionAndToken>>;
messageBus.Send(testContent2, token);
Assert.AreEqual(testContent2, ReceivedContentStringA);
Assert.AreEqual(testContent1, ReceivedContentStringB);
Assert.IsTrue(innerRecipientsDictionary.Count == 1);
}
示例3: TestUnRegisterObjectOnlyOverloadWithMoreThanOneHandler
public void TestUnRegisterObjectOnlyOverloadWithMoreThanOneHandler()
{
const string testContentString1 = "abcd1";
const string testContentString2 = "abcd2";
const string testContentStringAfterUnregister = "efgh";
Action<string> action1 = m => ReceivedContentStringA = m;
Action<string> action2 = m => ReceivedContentStringA1 = m;
Action<string> action3 = m => ReceivedContentStringB = m;
Reset();
IMessageBus messageBus = new MessageBus();
messageBus.Register<string>(this, TestConstants.MyStringToken, action1);
messageBus.Register<string>(this, TestConstants.MyStringToken, action2);
messageBus.Register<string>(this, TestConstants.MyContentToken, action3);
Assert.AreEqual(null, ReceivedContentStringA);
Assert.AreEqual(null, ReceivedContentStringA1);
Assert.AreEqual(null, ReceivedContentStringB);
messageBus.Send(testContentString1, TestConstants.MyStringToken);
messageBus.Send(testContentString2, TestConstants.MyContentToken);
Assert.AreEqual(testContentString1, ReceivedContentStringA);
Assert.AreEqual(testContentString1, ReceivedContentStringA1);
Assert.AreEqual(testContentString2, ReceivedContentStringB);
messageBus.Unregister<string>(this); // Use overload which just uses object
messageBus.Send(testContentStringAfterUnregister, TestConstants.MyStringToken);
messageBus.Send(testContentStringAfterUnregister, TestConstants.MyContentToken);
Assert.AreNotEqual(testContentStringAfterUnregister, ReceivedContentStringA1);
Assert.AreNotEqual(testContentStringAfterUnregister, ReceivedContentStringB);
}
示例4: TestUnRegisterObjectOnlyOverloadWithOneHandler
public void TestUnRegisterObjectOnlyOverloadWithOneHandler()
{
const string testContentString = "abcd";
const string testContentStringAfterUnregister = "efgh";
Reset();
IMessageBus messageBus = new MessageBus();
messageBus.Register<string>(this, TestConstants.MyStringToken, m => ReceivedContentStringA1 = m);
Assert.AreEqual(null, ReceivedContentStringA1);
messageBus.Send(testContentString, TestConstants.MyStringToken);
Assert.AreEqual(testContentString, ReceivedContentStringA1);
messageBus.Unregister<string>(this); // Use overload which just uses object
messageBus.Send(testContentStringAfterUnregister, TestConstants.MyStringToken);
Assert.AreNotEqual(testContentStringAfterUnregister, ReceivedContentStringA1);
}
示例5: TestRegisterUnregisterWithToken
public void TestRegisterUnregisterWithToken()
{
const string testContent1 = "abcd";
const string testContent2 = "efgh";
const string testContent3 = "ijkl";
const int token1 = 1234;
const int token2 = 4567;
Reset();
IMessageBus messageBus = new MessageBus();
messageBus.Register<string>(this, token1, m => ReceivedContentStringA1 = m);
messageBus.Register<string>(this, token2, m => ReceivedContentStringA = m);
Assert.AreEqual(null, ReceivedContentStringA1);
Assert.AreEqual(null, ReceivedContentStringA);
messageBus.Send(testContent1, token1);
Assert.AreEqual(testContent1, ReceivedContentStringA1);
Assert.AreEqual(null, ReceivedContentStringA);
messageBus.Send(testContent2, token2);
Assert.AreEqual(testContent1, ReceivedContentStringA1);
Assert.AreEqual(testContent2, ReceivedContentStringA);
messageBus.Unregister<string>(this, token1);
messageBus.Send(testContent3, token1);
Assert.AreEqual(testContent1, ReceivedContentStringA1);
Assert.AreEqual(testContent2, ReceivedContentStringA);
}
示例6: TestRegisterUnregisterOneActionWithToken
public void TestRegisterUnregisterOneActionWithToken()
{
const string testContent1 = "abcd";
const string testContent2 = "efgh";
const string testContent3 = "ijkl";
const string testContent4 = "mnop";
const int token1 = 1234;
const int token2 = 4567;
Reset();
IMessageBus messageBus = new MessageBus();
Action<string> action1 = m => ReceivedContentStringA1 = m;
Action<string> action2 = m => ReceivedContentStringA = m;
Action<string> action3 = m => ReceivedContentStringB = m;
messageBus.Register(this, token1, action1);
messageBus.Register(this, token2, action2);
messageBus.Register(this, token2, action3);
messageBus.Send(testContent1, token1);
messageBus.Send(testContent2, token2);
Assert.AreEqual(testContent1, ReceivedContentStringA1);
Assert.AreEqual(testContent2, ReceivedContentStringA);
Assert.AreEqual(testContent2, ReceivedContentStringB);
messageBus.Unregister(this, token2, action3);
messageBus.Send(testContent3, token1);
messageBus.Send(testContent4, token2);
Assert.AreEqual(testContent3, ReceivedContentStringA1);
Assert.AreEqual(testContent4, ReceivedContentStringA);
Assert.AreEqual(testContent2, ReceivedContentStringB);
}
示例7: TestRegisterSimpleTypes
public void TestRegisterSimpleTypes()
{
const string testContentString = "abcd";
var testContentDateTime = DateTime.Now;
const int testContentInt = 42;
Reset();
IMessageBus messageBus = new MessageBus();
messageBus.Register<string>(this, TestConstants.MyStringToken, m => ReceivedContentStringA1 = m);
messageBus.Register<DateTime>(this, TestConstants.MyDateTimeToken, m => ReceivedContentDateTime1 = m);
messageBus.Register<int>(this, TestConstants.MyIntToken, m => ReceivedContentInt = m);
Assert.AreEqual(null, ReceivedContentStringA1);
Assert.AreEqual(DateTime.MinValue, ReceivedContentDateTime1);
Assert.AreEqual(default(int), ReceivedContentInt);
messageBus.Send(testContentString, TestConstants.MyStringToken);
Assert.AreEqual(testContentString, ReceivedContentStringA1);
Assert.AreEqual(DateTime.MinValue, ReceivedContentDateTime1);
Assert.AreEqual(default(int), ReceivedContentInt);
messageBus.Send(testContentDateTime, TestConstants.MyDateTimeToken);
Assert.AreEqual(testContentString, ReceivedContentStringA1);
Assert.AreEqual(testContentDateTime, ReceivedContentDateTime1);
Assert.AreEqual(default(int), ReceivedContentInt);
messageBus.Send(testContentInt, TestConstants.MyIntToken);
Assert.AreEqual(testContentString, ReceivedContentStringA1);
Assert.AreEqual(testContentDateTime, ReceivedContentDateTime1);
Assert.AreEqual(testContentInt, ReceivedContentInt);
}
示例8: InnerListIsEmptyAfterUnregisterIsCalledWhereTwoActionsRegisteredForOneToken
public void InnerListIsEmptyAfterUnregisterIsCalledWhereTwoActionsRegisteredForOneToken()
{
const int token2 = 4567;
Reset();
IMessageBus messageBus = new MessageBus();
Action<string> action2 = m => ReceivedContentStringA = m;
Action<string> action3 = m => ReceivedContentStringB = m;
messageBus.Register(this, token2, action2);
messageBus.Register(this, token2, action3);
// Only unregister token2 and don't specify an action
messageBus.Unregister<string>(this, token2);
var type = typeof(MessageBus);
// _commandCollection is an instance, private member
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
// Retrieve a FieldInfo instance corresponding to the field
FieldInfo field = type.GetField("_recipientsStrictAction", flags);
var innerRecipientsDictionary = field.GetValue(messageBus) as Dictionary<Type, List<MessageBus.WeakActionAndToken>>;
Assert.IsFalse(innerRecipientsDictionary.Any());
}
示例9: SetMessageBus
public void SetMessageBus(MessageBus Bus)
{
_Bus = Bus;
Bus.Register(this);
}