2016-12-14 127 views
2

我是C#初學者,不能找出如何調用從一個子類內的基本構造:調用基類的構造

基類:

public class LookupScript 
{ 
    protected Func<IEnumerable> getItems; 

    protected LookupScript() 
    { 
     // 
    } 

    public LookupScript(Func<IEnumerable> getItems) : this() 
    { 
     Check.NotNull(getItems, "getItems"); 
     this.getItems = getItems; 
    } 

我的派生類:

public class PresenceLookup : LookupScript 
{ 
    public PresenceLookup() :base(??) 
    { 
    // 
    } 
    List<string> myMethod() 
    { 
     return null; 
    } 

如何將myMethod傳遞給基類?

謝謝

+1

順便說一句,這是值得呈現[MCVE]中的問題 - 在這裏,'lookupParams'不是招」沒有被聲明,似乎是不相關的,同樣是'Check.NotNull',並且無參數的構造函數是不相關的。一個完整的類只包含參數化的構造函數會更好。 –

回答

7

你不能,因爲myMethod是實例方法,你不能訪問任何與構造函數初始化中所創建的實例。這工作雖然:

public class PresenceLookup : LookupScript 
{ 
    public PresenceLookup() : base(MyMethod) 
    { 
    } 

    private static List<string> MyMethod() 
    { 
     return null; 
    } 
} 

一個使用方法組轉換創建Func<List<string>>,將調用MyMethod

或者,如果你不需要爲別的方法,只是使用lambda表達式:

public class PresenceLookup : LookupScript 
{ 
    public PresenceLookup() : base(() => null) 
    { 
    } 
}