2012-09-14 38 views
3

我建立一個小的應用程序與南希南希和抽象基類模塊/幻影創建類的實例

我想有一種基類,其他模塊可以繼承。
見下文(是有原因的,這是不是一個抽象類,我將在下面解釋)

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)停止南希試圖映射我ImportModule
2)實例化一個「幻象類」,從ImportModule繼承並ImportModule抽象再次

回答

7

南希集團有一個討論可能與你的問題有關,它肯定與Nancy沒有認識到的非抽象基礎模塊有關。這裏是安德烈亞斯哈坎森不得不說:

南希位於多數民衆贊成繼承NancyModule一切,假定 它的東西,它可以實例。南希知道它不能 創建一個抽象模塊的實例。因此,如果你有一個不抽象的基本模塊 ,那麼Nancy將嘗試新增它。我想 認爲99%的時間,有一個非抽象的基類是一個 破碎的設計。

這裏是鏈接到討論:Unable to resolve type: Nancy.Routing.DefaultRouteResolver