我需要解释一下才能解决问题。
我有3个项目:
项目 1 可以看到项目 2 和 3。
项目 2 可以看到项目 3。
项目 3 是一个 dll,其他的是应用程序。
我必须设计一个有很多子类的类。子类都有一个在基类中声明为抽象的方法,因此它们都必须使用它。它们需要分布在所有项目中,因为方法中的代码直接与项目交互。
抽象基类在项目 3 中,子类在 2 和 1 中。我遇到的问题是:
这是我写的方法:
public static IEnumerable<Type> GetSubClasses(Type typ)
{
IEnumerable<Type> subclasses =
from type in Assembly.GetAssembly(typ).GetTypes()
where type.IsSubclassOf(typ) && !type.IsAbstract
select type;
return subclasses;
}
我正在尝试获取该类型的所有子类,但是当我这样做时,我只从当前项目中获取子类。例如,如果我尝试从项目 1 中获取它们,我不会从项目 2 中获取子类。
我怎么做?我知道我可以从项目 2 中获得程序集引用,但它没有 GetAssembly(Type t) 方法,借助它我得到了所有子类。如果它会是一样的,我只需要在那里做同样的事情。
我的第二个问题是,有没有更简单的方法?在许多项目中都有这些类有点..“大”,也许有一种解决方案可以让它们成为一个。就像我说的,他们都需要拥有的方法的代码,需要直接与他们所在的项目进行交互。