Reflection Nancy和抽象基本模块类/创建虚拟类实例

Reflection Nancy和抽象基本模块类/创建虚拟类实例,reflection,abstract-class,nancy,Reflection,Abstract Class,Nancy,我正在和Nancy开发一个小应用程序 我希望有一种基类,其他模块可以从中继承。 见下文(这不是一个抽象类有一个原因,我将在下面解释) 但是,在其他地方的“DefaultImportModule”中,我有以下内容: var importerModule = Activator.CreateInstance(typeof(ImportModule<>).MakeGenericType(type)); var importerModule=Activator.CreateInstance

我正在和Nancy开发一个小应用程序

我希望有一种基类,其他模块可以从中继承。
见下文(这不是一个抽象类有一个原因,我将在下面解释)

但是,在其他地方的“DefaultImportModule”中,我有以下内容:

var importerModule = Activator.CreateInstance(typeof(ImportModule<>).MakeGenericType(type));
var importerModule=Activator.CreateInstance(typeof(ImportModule).MakeGenericType(type));
所以我需要能够基于传入的类型创建一种类型的导入器

(基本上,如果用户点击url/customer,它的操作与这样的类相同)

公共类CustomerImporter:ImporterModule
{
}
因此,在我看来,我有两个选择:
1) 阻止nancy尝试映射我的导入模块

2) 实例化从ImportModule继承的“幻影类”,并使ImportModule再次抽象

Nancy小组中有一个讨论可能与您的问题有关,它肯定与Nancy未识别的非抽象基本模块有关。以下是Andreas Håkansson说过的话:

Nancy找到继承NancyModule的所有内容并假定 这是它可以实例化的东西。南希意识到这是不可能的 创建抽象模块的实例。所以如果你有一个基本模块 那不是抽象的,那么南希会尝试重新设计它。我想 认为99%的时间里,拥有一个非抽象基类是一个错误 破设计

下面是讨论的链接:

public class MyCustomImporter : ImportModule<MyCustomType>
{
   //overrides.... 
}
var importerModule = Activator.CreateInstance(typeof(ImportModule<>).MakeGenericType(type));
public class CustomerImporter : ImporterModule<Customer>
{
}