public abstract class BaseClass
{
private Type _classType;
public Type ClassType
{
get
{
return _classType;
}
set
{
_classType= value;
}
}
public abstract Type GetType();
}
public class InheritedClass: BaseClass
{
public override Type GetType()
{
if (ClassType == null)
{
ClassType = typeof(InheritedClass);//ie SingleInfringement or DblInfringment
}
return ClassType;
}
}
Самый простой способ, который я нашел для решения этой проблемы, это просто иметь абстрактный метод GetType () в вашем базовом классе, который по определению должен быть переопределен в вашем унаследованном классе.
Отражение довольно дорого, и в большинстве случаев его следует использовать с осторожностью.Поэтому, когда мы его используем, мы просто сохраняем результат нашего отражения.
Это позволяет нам делать:
var entities = _infCol.InfCollection.Where(w => w.GetType() == typeof(DesiredType) );
отсюда вы можете делать то, что вы хотите, массовая вставка вдругая коллекция или что-то еще.