public bool Register <T>(IClosable viewModelBase, Action <T> action, string msgTag) { var type = viewModelBase.GetType(); foreach (var actionDetailse in actions) { if (actionDetailse.ViewModel.GetType() == type && actionDetailse.ViewModel.IsClosed && actionDetailse.MethodName == action.Method.Name && actionDetailse.Type == typeof(T) && actionDetailse.MsgTag == msgTag) { actionDetailse.ViewModel = viewModelBase; ((ActionDetails <T>)actionDetailse).Action = action; } } foreach (var actionDetailse in actions) { if (actionDetailse.ViewModel == viewModelBase && actionDetailse.MethodName == action.Method.Name && actionDetailse.Type == typeof(T) && actionDetailse.MsgTag == msgTag) { return(false); } } var actionDetails = new ActionDetails <T>(); actionDetails.ViewModel = viewModelBase; actionDetails.Action = action; actionDetails.Type = typeof(T); actionDetails.MsgTag = msgTag; actions.Add(actionDetails); return(InternalMediator.Register(actionDetails)); }