1

是否可以在没有任何静态引用或任何其他 DI/IoC 解决方案dynamic的情况下在其他模块之间共享来自模块的类型对象?interface

假设我们在汇编中有一个这样的 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);
        }
    }

出色地,

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

提前致谢 :)

4

0 回答 0