Совместное использование динамического объекта между модулями Prism

Можно ли поделиться dynamic введите объект из модуля между другими модулями без каких-либо статических ссылок или interface или любое другое решение DI/IoC?

Допустим, у нас есть GlobalEvent, как это в Core.dll монтаж:

public class GlobalEvent : CompositePresentationEvent<dynamic>
{
    public GlobalEvent()
    {
    }

    // public void Publish(dynamic payload) exist in base class
}

И в ModuleA.dll (имеет статическую ссылку на Core.dll), опубликуйте это так:

public void RaiseVoucherAdded(Models.Voucher voucher)
{
    _eventAggregator.GetEvent<GlobalEvent>().Publish(voucher);
}

// also Voucher class is in ModuleA.dll in Models namespace
public class Voucher
{
     // members...
}

И в ModuleB.dll (имеет статическую ссылку на Core.dll), подпишитесь так:

    this._eventAggregator.GetEvent<GlobalEvent>().Subscribe(EventOccured);
    ...
    private void EventOccured(dynamic data)
    {
        if (data.GetType().Name == "ModuleA.Models.Voucher")
        {
            DoSomethingByVoucher(data);
        }
    }

Что ж,

Каковы недостатки этого решения? Это вообще возможно? Если да, поддерживает ли он модули, созданные любым другим языком CLR в.NET?

Заранее спасибо:)

0 ответов

Другие вопросы по тегам