private string FindInterfaceGenericTypeArguments(IHasMediatorKey key, int compareTo = 1, Func <Type[], string> converter = null) { var interfaces = key.GetType().GetInterfaces(); var allAvailable = interfaces.Select(x => x.GetGenericArguments()); var types = allAvailable.FirstOrDefault(x => { return(x.Length == compareTo); }); if (converter == null) { converter = t => t.First().Name; } return(types == null ? null : converter(types)); }
private string FromTypedResultOutlet(IHasMediatorKey key) { Func <Type[], string> converter = (types) => $"{types.First().Name}-{types.Last().Name}"; return(FindInterfaceGenericTypeArguments(key, compareTo: 2, converter: converter)); }
private string FromTypedOutlet(IHasMediatorKey key) { return(FindInterfaceGenericTypeArguments(key)); }
private string FromOutlet(IHasMediatorKey key) { var o = key as IOutlet; return(o == null ? null : o.OutletKey); }