public T Find <T>(string name) where T : class { var typeName = typeof(T).Name; switch (typeName) { case nameof(MotionCardWrapper): return(MotionExs.FirstOrDefault(ex => ex.Value.Name == name).Value as T); case nameof(IDiEx): return(DiExs.FirstOrDefault(ex => ex.Value.Name == name).Value as T); case nameof(IDoEx): return(DoExs.FirstOrDefault(ex => ex.Value.Name == name).Value as T); case nameof(IVioEx): return(VioExs.FirstOrDefault(ex => ex.Value.Name == name).Value as T); case nameof(ICylinderEx): return(CylinderExs.FirstOrDefault(ex => ex.Value.Name == name).Value as T); case nameof(IAxisEx): return(AxisExs.FirstOrDefault(ex => ex.Value.Name == name).Value as T); case nameof(PlatformEx): return(Platforms.FirstOrDefault(ex => ex.Value.Name == name).Value as T); case nameof(Station): return(Stations.FirstOrDefault(ex => ex.Value.Name == name).Value as T); case nameof(StationTask): return(Tasks.FirstOrDefault(ex => ex.Value.Name == name).Value as T); default: return(null); } }