LinqToSQL - приведение объекта IQueryable во время выполнения? - PullRequest
1 голос
/ 23 июня 2009

Учитывая это:

var query = context.GetTable<T>();

Где "T" - это общая сущность, переданная в метод,

Я бы хотел сделать что-то вроде этого:

if(typeof(TEntity) is IEntitySoftDeletable)
  query = query.Cast<IEntitySoftDeletable>.Where(ent => !ent.IsDeleted);
}

Возможно ли это?

В настоящее время мне говорят, что я не могу разыграть этот путь.

Я понимаю, что мог бы заставить параметр "T" быть IEntitySoftDeletable на уровне класса или метода, но я пытаюсь избежать этого и обеспечить большую гибкость от того же метода.

Ответы [ 2 ]

0 голосов
/ 23 июня 2009

Не уверен, что я полностью понимаю, что вы хотите, но будет ли это работать?

query.OfType<IEntitySoftDeletable>().Where(ent => !ent.IsDeleted); //OfType will only give the ones that are IEntitySoftDelteable
0 голосов
/ 23 июня 2009

Вы можете проверить интерфейс, используя

obj.GetType().GetInterface("IEntitySoftDelete") == null

Я думаю, это должно работать для того, что вам нужно ... просто убедитесь, что добавили использование для System.Reflection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...