我正在与 Nancy 构建一个小型应用程序
我想要一种基类,其他模块可以继承。
见下文(这不是抽象类是有原因的,我将在下面解释)
public class ImportModule<T> : NancyModule
{
protected ImportModule()
: this(typeof(T).Name.ToLower())
{
Get["/"] = _ => "need to select an action - xxx";
Get["/importnew"] = _ => ImportNew(); //note - method omitted for brevity
}
}
当我运行我的应用程序时,我得到
无法解析类型:My.NameSpace.TypedImporter`1
作为旁注,如果ImportModule
类是抽象的,这不会发生
好的
-现在,我可以有这样的课程:
public class MyCustomImporter : ImportModule<MyCustomType>
{
//overrides....
}
但是,在其他地方,在“DefaultImportModule”中,我有以下内容:
var importerModule = Activator.CreateInstance(typeof(ImportModule<>).MakeGenericType(type));
所以我需要能够创建一种类型的导入器,基于传入的类型
(基本上,如果用户点击 url /customer,它的作用与这样的类相同)
public class CustomerImporter : ImporterModule<Customer>
{
}
所以,正如我所看到的,我有两个选择:
1)停止 nancy 尝试映射我的 ImportModule
2)实例化一个从 ImportModule 继承的“幻像类”并使 ImportModule 再次抽象