我遇到了一个特殊的问题。我正在开发一个动态工厂项目,我的目的是能够基于 XML 文件创建新对象。我的问题是这样的:
我有一个单独的项目,用于我所在工厂的基类
public abstract class DynamicContentFactory<T, Params> where T: class where Params: DynamicParameters
在这个抽象类中,我有一个静态方法
Create
如下public static T Create(Params data)
Params
仅包含一个字符串作为默认值,称为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
与我希望它创建的 Items 位于同一命名空间中,但基类位于另一个命名空间中。有没有办法解决?我尝试将参数更改为
Type.GetType()
totypeof(T).ToString()
以测试它是否可以找到它并且它也没有找到它。我无法创建从我的DynamicContent
项目到我的主项目的链接,因为指向另一种方式的链接已经存在。我觉得它甚至找不到它初始化的类的类型是愚蠢的。
所以我的问题是:解决这个问题的最佳方法是什么?我宁愿将我DynamicContent
的项目作为一个单独的库维护在一个单独的项目中,而不必将它包含在我的主项目中。有没有办法让它找到类,或者我必须为我想用它初始化的类型创建第三个项目,以便能够从主项目和DynamicContent
项目中引用它?
BR,
-萨米