私は独特の問題に遭遇しました。私は動的なファクトリ プロジェクトに取り組んでおり、XML ファイルに基づいて新しいオブジェクトを作成できるようにすることを目的としています。私の問題はこれです:
私が持っている工場の基本クラスの別のプロジェクトがあります
public abstract class DynamicContentFactory<T, Params> where T: class where Params: DynamicParameters
この抽象クラスには、次のような静的メソッド
Create
がありますpublic static T Create(Params data)
Params
には、デフォルトで という文字列が 1 つだけ含まれていますType
。オブジェクトの作成を基本クラスと同じ名前空間に制限したいT
ので、次のようにします。string namespaceStr = typeof(T).ToString(); namespaceStr = namespaceStr.Substring(0, namespaceStr.LastIndexOf('.') + 1); Type type = Type.GetType(namespaceStr + data.Type);
私のメイン プロジェクトには、特定のファクトリ クラスがあります。
public class ItemFactory : DynamicContent.DynamicContentFactory<ItemFactory, ItemParameters> { }
問題は、 を呼び出す
ItemFactory.Create
と がType.GetType
返されることnull
です。ItemFactory
作成するアイテムと同じ名前空間に存在しますが、基本クラスは別の名前空間に存在します。これを回避する方法はありますか?Type.GetType()
toのパラメーターを変更して、typeof(T).ToString()
それが見つかるかどうかをテストしようとしましたが、それも見つかりませんでした。DynamicContent
他の方法へのリンクが既に存在するため、自分のプロジェクトからメイン プロジェクトへのリンクを作成できません。初期化されたクラスの型さえ見つからないのはばかげていると思います。
私の質問は次のとおりです。これを回避する最善の方法は何ですか? DynamicContent
プロジェクトをメイン プロジェクトに含めるのではなく、別のプロジェクトで別のライブラリとして維持したいと考えています。クラスを見つけさせる方法はありますか、それともメイン プロジェクトとプロジェクトの両方から参照できるようにするために、これで初期化するタイプの 3 番目のプロジェクトを作成する必要がありDynamicContent
ますか?
BR、
-サーミ