public Operations(IList<Type> types) { Types = types; var typeNames = types.Select(x => x.Name); Names = new List<string>(); OneWayOperations = new Operations(); ReplyOperations = new Operations(); foreach (var type in types) { if (type.Name.EndsWith(ResponseSuffix)) continue; Names.Add(type.Name); var hasResponse = typeNames.Contains(type.Name + ResponseSuffix); if (hasResponse) { ReplyOperations.Add(type); } else { OneWayOperations.Add(type); } } Names.Sort(); }