在松散耦合的模块Prism之间共享动态对象?

时间:2012-04-21 10:57:18

标签: c# dynamic prism eventaggregator

是否可以在其他模块之间从模块共享dynamic类型对象而无需任何静态引用或interface或任何其他DI / IoC解决方案?

假设我们在Core.dll程序集中有这样的GlobalEvent:

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);
        }
    }

好吧,

此解决方案有哪些缺点?它甚至可能吗?如果是,它是否支持由.NET中的任何其他CLR语言创建的模块?

提前致谢:)

0 个答案:

没有答案