c# - 以方法作为参数调用基础构造函数

标签 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 传递给基类?

谢谢

最佳答案

你不能,因为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)
    {
    }
}

关于c# - 以方法作为参数调用基础构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41137822/

相关文章:

c# - 是否有一种类型的对象,我可以将 Buttons 和 MenuItem 对象都转换到该对象以访问它们的 Tag 属性?

c# - 服务定位器模式——如何处理同一服务接口(interface)的多个实现

c# - Entity Framework ALTER TABLE 语句与 FOREIGN KEY 约束冲突

c# - 即使设置为非持久性,ASP.NET MVC 4 身份验证 cookie 也会被保存

c# - 如何从 ASP.NET Framework 运行 package.json 脚本

.net - 从哪里获得 .net 的 apache poi 端口

c# - SQL 服务器 : conditional aggregate ;

c# - SQL 查询中不包含 Where 子句

ASP.net 应用程序崩溃 - 无法加载文件或程序集 'Microsoft.Threading.Tasks.Extensions.Desktop'

.net 正则表达式超过 2 个连续字母