C# 将成员函数作为委托参数传入

C# 将成员函数作为委托参数传入,c#,delegates,C#,Delegates,我有一个基类,它的ctor将委托作为参数,还有一个从中继承的类 以下操作很好: class Base { public Base(Func<bool> func) { } } class Sub : Base { public Sub() : base(() => true) { } public Sub(int i) : base(() => { return true; })

我有一个基类,它的ctor将委托作为参数,还有一个从中继承的类

以下操作很好:

class Base
{
    public Base(Func<bool> func)
    {
    }
}

class Sub : Base
{
    public Sub()
        : base(() => true)
    {
    }

    public Sub(int i)
        : base(() => { return true; })
    {
    }
}
class Sub : Base
{
    public Sub()
        : base(Func)
    {
    }

    private bool Func()
    {
        return true;
    }
}
如果
Func
是一个静态方法,它就可以工作。但是我想在函数中使用实例成员


我怎样才能做到这一点呢?

正如我所评论的,这在我看来就像是一个X Y问题,而且似乎是一个有缺陷的设计, 您可以将基类更改为只调用虚拟方法并重写它吗

class Base
{
    public Base()
    {
    }

   public virtual bool func() {return false};
}   

class Sub : Base
{
  public Sub()
  {
  }

  public override bool func()
  {
    return true;
  }
}

你也可以在

上阅读更多关于它的评论,这在我看来像是一个X Y问题,在我看来似乎是一个有缺陷的设计, 您可以将基类更改为只调用虚拟方法并重写它吗

class Base
{
    public Base()
    {
    }

   public virtual bool func() {return false};
}   

class Sub : Base
{
  public Sub()
  {
  }

  public override bool func()
  {
    return true;
  }
}

你也可以在

上阅读更多关于它的内容,这在我看来像是一个X Y问题,你能把你的基类改成只调用一个虚拟方法并覆盖它吗?@Boo这是一个我会支持的答案。。。(提示!)@Boo,它假定委托必须是一个实例方法,而不是简单地允许它是一个实例方法(或任何其他方法)。@Boo我想这会起作用。我太专注于委托了,以至于完全忘记了虚拟方法,甚至是抽象方法。在我看来,这就像是一个X Y问题,你能把你的基类改成只调用一个虚拟方法,然后重写它吗?@Boo这是一个我会赞成的答案。。。(提示!)@Boo,它假定委托必须是一个实例方法,而不是简单地允许它是一个实例方法(或任何其他方法)。@Boo我想这会起作用。我太专注于代理了,以至于我完全忘记了虚拟方法,甚至是抽象方法。是的,我认为这是一条路。谢谢。如果您还希望能够从外部放入任意委托,您可以使用类似于
Func FuncProp
的属性来存储给定委托,或者如果未指定,则引用
Func()
方法。然后在任何需要的地方使用它。是的,我想这是一条路。谢谢。如果您还希望能够从外部放入任意委托,您可以使用类似于
Func FuncProp
的属性来存储给定委托,或者如果未指定,则引用
Func()
方法。然后在需要的地方使用这些财产。