問題を解決するために少し説明する必要があります。
私には3つのプロジェクトがあります:
プロジェクト1はプロジェクト2と3を見ることができます。
プロジェクト2はプロジェクト3を見ることができます。
プロジェクト3はdllであり、その他はアプリです。
多くのサブクラスを持つクラスを設計する必要がありました。サブクラスはすべて、ベースで抽象として宣言されているメソッドを持っているため、すべてそれを使用する必要があります。methodeのコードはプロジェクトと直接対話するため、すべてのプロジェクトに分散させる必要があります。
抽象基本クラスはプロジェクト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;
}
このタイプのすべてのサブクラスを取得しようとしていますが、取得すると、現在のプロジェクトからのみサブクラスを取得します。たとえば、project1からそれらを取得しようとすると、プロジェクト2からサブクラスを取得しません。
それ、どうやったら出来るの?プロジェクト2からアセンブリ参照を取得できることはわかっていますが、GetAssembly(Type t)メソッドがないため、すべてのサブクラスを取得できます。それが同じだとしたら、私はそこで同じことをしなければなりませんでした。
私の2番目の質問は、もっと簡単な方法はありますか?多くのプロジェクトでこれらのクラスを使用するのは少し「大規模」ですが、それらを1つにまとめるソリューションがあるかもしれません。私が言ったように、彼ら全員が持つ必要のあるメソッドのコードは、彼らがいるプロジェクトと直接対話する必要があります。