使用方法作为参数调用基础构造函数

时间:2016-12-14 08:20:40

标签: c# .net

我是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 个答案:

答案 0 :(得分: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)
    {
    }
}