Как проверить, содержит ли список объект того же типа, что и вызывающий объектC#

Место общения программистов C#
Ответить
Anonymous
 Как проверить, содержит ли список объект того же типа, что и вызывающий объект

Сообщение Anonymous »

У меня есть список объектов одного базового класса. Эти объекты могут быть созданы из нескольких мест, но существуют только как часть такого списка. При добавлении нового объекта я хочу проверить, есть ли уже объект того же класса в его родительском списке. Я пытался сделать это следующим образом:

Код: Выделить всё

public class ListHolder
{
List a = new List();
}

public abstract class BaseType
{
public BaseType(ListHolder listIn)
{
if (listIn.a.OfType().Any())
{
listIn.a.OfType().ToList()[0].Reapply();
} else {
listIn.Add(this);
Apply();
}
}

protected abstract void Reapply();
protected abstract void Apply();
}
Это не работает; Я получаю серию синтаксических ошибок, я предполагаю, потому что OfType не любит вычислять typeof внутри своего вызова. Также не получится сказать Type t = typeof(this), а затем вызвать OfType< t>. Как я могу обойти это?
РЕДАКТИРОВАТЬ:
Я бы хотел иметь возможность затем вызвать что-то вроде

Код: Выделить всё

public class DerivedType : BaseType
{
protected override void Reapply() {}
protected override void Apply() {}
}

ListHolder b = new ListHolder();
b.a.Add((BaseType)Activator.CreateInstance(DerivedType)); // Should call Apply
b.a.Add((BaseType)Activator.CreateInstance(DerivedType)); // Should call Reapply
подождите, в этом примере добавление в список происходит в конструкторе... ну, суть вы поняли

Подробнее здесь: https://stackoverflow.com/questions/793 ... the-caller
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»