EnkuMessenger 0.0.1

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package EnkuMessenger --version 0.0.1
NuGet\Install-Package EnkuMessenger -Version 0.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EnkuMessenger" Version="0.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EnkuMessenger --version 0.0.1
#r "nuget: EnkuMessenger, 0.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install EnkuMessenger as a Cake Addin
#addin nuget:?package=EnkuMessenger&version=0.0.1

// Install EnkuMessenger as a Cake Tool
#tool nuget:?package=EnkuMessenger&version=0.0.1

Build&Test
Nuget
Nuget

概要

本ライブラリ通常では情報のやり取りが行う事の難しい MVVMパターンでいうところのViewModel-ViewModel間やView-ViewModel間での 情報のやり取りを行うためのメッセンジャーパターンと呼ばれる デザインパターンの実装を提供するライブラリである。

受信側のクラスの参照は弱参照で保持されるのでメモリリークの心配はありません。

通常の通信

using EnkuMessenger;

// メッセージでやり取りされるオブジェクトの型
class MyMessage
{
    public string Value = string.Empty;
}

// 受信側クラス
class MyReceiver : IReceiver<MyMessage>
{
    public string Value = string.Empty;

    // メッセージ受信時の処理
    public void ReciveMessage(MyMessage message)
    {
        this.Value = message.Value;
    }
}

class Program
{ 
    static void Main()
    {
        // Messengerの用意
        IMessenger<MyMessage> messenger = Messenger<MyMessage>.Instance;

        // ダミーの受信側用意
        var myReceiver = new MyReceiver();
        messenger.Register(myReceiver);

        // ダミーのメッセージの用意と送信
        var myMessage = new MyMessage();
        myMessage.Value = "Hello World";
        messenger.Send(myMessage);

        Console.WriteLine(myReceiver.Value);
    }
}

フィルターを用いたメッセージの選別

using EnkuMessenger;

// メッセージでやり取りされるオブジェクトの型
class MyMessage
{
    public string Key = string.Empty;
    public string Value = string.Empty;
}

// 受信側クラス
class MyReceiver : IReceiver<MyMessage>
{
    public string Value = "No Received";

    // メッセージ受信時の処理
    public void ReciveMessage(MyMessage message)
    {
        this.Value = message.Value;
    }
}

class Program
{ 
    static void Main()
    {
        const string KEY1 = "MsgKey1";
        const string KEY2 = "MsgKey2";

        // Messengerの用意
        IMessenger<MyMessage> messenger = Messenger<MyMessage>.Instance;

        // ダミーの受信側用意とフィルタ設定
        var myReceiver1 = new MyReceiver();
        var myReceiver2 = new MyReceiver();
        messenger.Register(myReceiver1, message => message.Key == KEY1);
        messenger.Register(myReceiver2, message => message.Key == KEY2);

        // ダミーのメッセージの用意と送信
        var myMessage = new MyMessage();
        myMessage.Value = "Received!!!";
        myMessage.Key = KEY1;
        messenger.Send(myMessage);

        Console.WriteLine($"myReceiver1.Value = {myReceiver1.Value}");
        Console.WriteLine($"myReceiver2.Value = {myReceiver2.Value}");
        // [result]
        // myReceiver1.Value = Received!!!
        // myReceiver2.Value = No Received
    }
}
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated