Итак, я пытаюсь выяснить, как получить базовый класс ссылочных классов. Например, у меня есть следующие:Как получить ссылочные типы базового класса типа
Раствор А {
..Project
.... класс ж
...... GetAllClassesSubclassOfClassX() {возвращение конструктора, если } соответствует
--Project Б
---- абстрактный класс х
------ абстрактные Methoda()
..Project С
.... класс у: х
...... переопределить Methoda()
--Project D
---- класс г: х
------ переопределить Methoda()
Итак, мой текущий код возвращает ссылки, но я не уверен, как определить, являются ли они подклассами определенного типа класса.
public List<AbstractCWThirdPartyConsumer> GetAllProviders()
{
AssemblyName[] types = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
List<AbstractCWThirdPartyConsumer> listOfAllProcessors = new List<AbstractCWThirdPartyConsumer>();
foreach (AssemblyName type in types)
{
if (IsSameOrSubclass(listOfAllProcessors.GetType(), type.GetType()))
{
//AbstractCWThirdPartyConsumer proc = (AbstractCWThirdPartyConsumer)type.GetConstructor(Type.EmptyTypes).Invoke(null);
//listOfAllProcessors.Add(proc);
}
}
return listOfAllProcessors;
}
public bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant)
{
return potentialDescendant.IsSubclassOf(potentialBase);
}
}
Любая помощь с исправлением моей проблемы была бы полезна! Заранее спасибо.
У вас не может быть абстрактных проектов, и проекты не наследуются друг от друга. Я предполагаю, что «Project A, Project B, ...» являются классами? – PoweredByOrange
Что такое решение A? Что такое проект A, B, ...? Как проект может быть абстрактным? Какие ссылки какие? Что означают обратные ссылки? Переменная типа - экземпляр AssemblyName, вызывающий type.GetType() даст вам typeof (AssemblyName), что вы хотите с этим сделать? Чего вы хотите достичь? – fejesjoco
Прошу прощения. да Проекты C и Project D имеют классы, которые относятся к классу Project B. сделав редактирование сейчас. –