Это мой ответ, немного больше удовольствия одно решение в моих глазах: D
class MyList<T> : List<T>
{
static List<object> superlist;
public string name;
~MyList() {
if (superlist != null)
superlist.Remove(this);
}
public MyList(string name)
: base() {
init(name);
}
public MyList(string name, int cap)
: base(cap) {
init(name);
}
public MyList(string name, IEnumerable<T> IE)
: base(IE) {
init(name);
}
void init(string name) {
if (superlist == null)
superlist = new List<object>();
this.name = name;
superlist.Add(this);
}
public static void AddToListByName(T add, string listName) {
for (int i = 0; i < superlist.Count; i++) {
if (superlist[i].GetType().GenericTypeArguments[0] == add.GetType() && ((MyList<T>)(superlist[i])).name == listName) {
((MyList<T>)(superlist[i])).Add(add);
return;
}
}
throw new Exception("could not find the list");
}
}
и теперь вы можете использовать его легко и cle в вашем коде
MyList<string> a = new MyList<string>("a");
MyList<string> b = new MyList<string>("b");
a.Add("normal add to list a");
MyList<string>.AddToListByName("hello add to a", "a");
MyList<string>.AddToListByName("hello add to b", "b");
Что вы уже пробовали? – evgenyl
Возможно, вам следует показать, как хранятся списки и где это имя входит? Является ли это именем списка или именем судна в списке или тем, что вы ищете? Вы уже пытались его реализовать? Если да, то как выглядел этот код? –
Привет, Извините, если я не ясно списки хранятся в классе, то построенные в классе так: класса линкор { // Атрибуты, Корабли игрока частный Список _playerCarrierA; частный Список _playerDestroyerA; public Battleship() { _playerCarrierA = новый Список (); _playerDestroyerA = новый Список (); } Существует намного больше списков, в основном я хочу, чтобы метод извлекал список по его имени, а затем добавлял строку в этот список. Я пробовал много методов, ни один из них не был успешным. –
Kehza