У меня есть класс пользователя, скажем, User
public class User
{
public int Id {get;set;}
public string Name {get;set;}
}
и интерфейс, который возвращает группу пользователей, глядя на идентификатор данного пользователя
public intervace IPeople
{
IList<User> GetPeople (int id);
string Key {get;}
}
Вот несколько реализаций IPeople
public class Friends : IPeople
{
public IList<User> GetPeople (int id)
{
return ListOfUsersWhoAreFriends();
}
public string Key {get { return "Friends"; }
}
public class Fans : IPeople
{
public IList<User> GetPeople (int id)
{
return ListOfFans();
}
public string Key {get { return "Fans"; }
}
Теперь в моем вызывающем методе
string key="SomeKey" ; //It could be friends or fans
int id =1;
IPeople[] allPeople = GetAllInstancesOf<IPeople>();
IList<User> requiredUsers = allPeople.FirstOrDefault(m=>m.Key == key).GetPeople(id);
Так сказать, я создаю экземпляры всех производных классов и затем проверяю, какой мне нужен, прежде чем вызывать функцию для него,Он работает нормально, но я чувствую, с точки зрения производительности, это не очень хорошее решение, так как я создаю пример путем рефлексии.Каков лучший способ достичь этого.Какой-то заводской метод Если да, то как ??
Помощь будет оценена.
С уважением
Parminder