private IList <Type> GetSerializationTypes(Type t) { if (GenericUtils.IsSubClassOfGeneric(t, typeof(IReliableDictionary <,>))) { var ts = new List <Type>() { typeof(NotifyDictionaryItemAddedEventArgs <,>).MakeGenericType(t.GetGenericArguments()), typeof(NotifyDictionaryClearEventArgs <,>).MakeGenericType(t.GetGenericArguments()), typeof(NotifyDictionaryItemRemovedEventArgs <,>).MakeGenericType(t.GetGenericArguments()), typeof(NotifyDictionaryItemUpdatedEventArgs <,>).MakeGenericType(t.GetGenericArguments()), typeof(NotifyDictionaryRebuildEventArgs <,>).MakeGenericType(t.GetGenericArguments()), t }; ts.AddRange(t.GetGenericArguments()); return(ts); } else { return(new List <Type>() { t }); } }