Невозможно получить выбранный тип из GetTypes - PullRequest
0 голосов
/ 27 сентября 2011

Я хочу инициализировать классы в следующей сборке, которые наследуются от класса EntityBase с использованием отражения.

Я предполагаю, что лямбда-выражение является правильным, но я не знаю, как получить эти 2 класса(в сборке есть 2 класса, которые наследуют EntityBase) от types2.

Assembly a = Assembly.LoadFrom("X:\\Workspace\\Operations\\ItemSupplierSetupRequest\\Main\\Source\\ItemSupplierSetupRequest.Entity\\bin\\Debug\\xxxx.ItemSupplierSetupRequest.Entity.dll");
IEnumerable<Type> types2 =
    a.GetTypes().Where(x => x.BaseType.ToString().Equals("xxxx.ItemSupplierSetupRequest.Entity.EntityBase"));

Я также пробовал

var result =
    a.GetTypes().Where(x => x.BaseType.FullName.Equals("xxxx.ItemSupplierSetupRequest.Entity.EntityBase"));

, но не знаю, как использовать или проверитьесли это возвращает те 2 класса?

1 Ответ

3 голосов
/ 27 сентября 2011

Ваши запросы, вероятно, должны работать. Но нет необходимости использовать Equals() или сравнивать типы, используя строки. Вы можете использовать (предполагая, что EntityBase находится в ссылочной сборке, а его пространство имен находится в using):

a.GetTypes().Where(x => x.BaseType == typeof(EntityBase))

Имейте в виду, что это не вернет все типы, которые наследуются от EntityBase, только те, которые наследуют от него напрямую .

...