2016-12-14 11 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を基本クラスに渡すにはどうすればよいですか? myMethodはインスタンスメソッドである、とあなたは、コンストラクタの初期化子内で作成されたインスタンスとは何かをアクセスすることはできませんよう

は、あなたがすることはできませんあなた

+1

は、それが提示する価値がある[MCVE]の質問に - ここでは、 '「hasn lookupParams' 'Check.NotNull'とは無関係であると宣言されており、無関係なように見えます。パラメータのないコンストラクタは無関係です。パラメータ化されたコンストラクタだけで構成された完全なクラスが良いでしょう。 –

答えて

7

ありがとうございます。しかしこれは動作します:メソッドグループの変換を使用しています

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

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

MyMethodを呼び出しますFunc<List<string>>を作成します。

それとも、何か他のもののための方法を必要としない場合は、単にラムダ式を使用:余談として

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