工作中一个项目用到微软的Microsoft.Practices.Prism.PubSubEvents.dll里的发布订阅工具类,实现viewmodel之间的通信,奈何项目升级的时候升级工具不支持这么长名字的dll,我们也知道dll文件的名字和dll程序集名是强关联的,文件名不能随意改变,否则编译可以通过,运行的时候是按程序集名+.dll后缀去寻找dll路径的,必然会导致无法找到引用文件错误。那么没办法只好自己实现这个工具类了,简单版工具类如下:
public class LDEventAggregator
{
public delegate void MsgAction(object msgTopic);
private Dictionary<string, List<MsgAction>> actionDic = new Dictionary<string, List<MsgAction>>();
public void Publish(object msgTopic)
{
if (actionDic.ContainsKey(msgTopic.GetType().Name))
{
foreach (var doAction in actionDic[msgTopic.GetType().Name])
{
if (doAction != null)
{
doAction(msgTopic);
}
}
}
}
public void Subs