Совместное использование динамического объекта между модулями 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?
Заранее спасибо:)