У меня есть объект, который содержит несколько списков, которые все получены из ObjectCollection (T): IObjectCollection (T)
public P()
{
A = new A();
C = new C();
H = new H();
M = new M();
T = new T();
}
Я хочу иметь возможность перебирать эти списки, как если бы они были один список, но я хочу, чтобы верхние списки были разделены, и я не хочу проецировать новый список из них. Поэтому я подумал о том, чтобы сделать что-то подобное в классе P:
public T GetObject<T>(IUniqueIdentifier identifier) where T : class
{
T dObject = A.FirstOrDefault(a => a.GuidId == identifier) as T ?? H.FirstOrDefault(a => a.GuidId == identifier) as T ?? M.FirstOrDefault(a => a.GuidId == identifier) as T ?? T.FirstOrDefault(a => a.GuidId == identifier) as T;
return Object;
}
Все объекты в списках происходят от ObjectBase и имеют свойство GuidId publi c.
Но это кажется Руби sh раствор. Тогда я подумал о том, чтобы сделать что-то вроде этого:
List<IObjectCollection<ObjectBase>> _objects = new List<IObjectCollection<ObjectBase>>{A,C,H,M,T};
и затем использовать что-то вроде этого (код не точный!):
public T GetObject<T>(Guid identifier) where T : class
{
T Object = _objects.FirstOrDefault(c => c.Contains(identifier)) as T;
return Object;
}
Но, увы, я просто не могу выработать правильный способ сделать это.
Любая помощь приветствуется.
Stu.