Ale*_*lex 3 reflection abstract-class nancy
我正和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
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的应用程序时,我明白了
无法解析类型:My.NameSpace.TypedImporter`1
作为旁注,如果ImportModule类是抽象的,那么这不会发生
好的 -
现在,我可以有一个这样的课程:
public class MyCustomImporter : ImportModule<MyCustomType>
{
//overrides....
}
Run Code Online (Sandbox Code Playgroud)
但是,在其他地方,在"DefaultImportModule"中,我有以下内容:
var importerModule = Activator.CreateInstance(typeof(ImportModule<>).MakeGenericType(type));
Run Code Online (Sandbox Code Playgroud)
所以我需要能够根据传入的类型创建一种导入器
(基本上,如果用户点击网址/客户,它就像这样的类一样)
public class CustomerImporter : ImporterModule<Customer>
{
}
Run Code Online (Sandbox Code Playgroud)
所以,正如我所看到的,我有两个选择:
1)停止nancy尝试映射我的ImportModule
2)实例化一个继承自ImportModule的"幻像类"并再次使ImportModule成为抽象
南希小组中有一个可能与您的问题有关的讨论,它肯定与南希未被识别的非抽象基础模块有关.以下是AndreasHåkansson所说的话:
Nancy找到了继承NancyModule的所有东西,并假设它可以实例化.Nancy意识到它无法创建抽象模块的实例.因此,如果你有一个不抽象的基础模块,那么南希将尝试新建它.我想在99%的时间里,拥有一个非抽象的基类是一个破碎的设计.
以下是讨论的链接:无法解析类型:Nancy.Routing.DefaultRouteResolver
| 归档时间: |
|
| 查看次数: |
1319 次 |
| 最近记录: |