我怎样才能公开一个在另一个类中声明的C#动作?

问题描述 投票:0回答:1

我想在一个公有类中公开一个在内部类中声明的Action。

internal class A
{ 
     public Action OnEvent { get; set; }
}

public class B
{
     private A a = new A();

     public Action OnEvent 
     {
         get => a.OnEvent;
         set => a.OnEvent += value;    <- this is not correct

     }
}

我正在寻找一个属性gettersetter,它允许写这样的代码。

var b = new B();
b.OnEvent += DoSomething;  // this should add DoSomething to B.a.OnEvent
...
b.OnEvent -= DoSomething;  // this should remove DoSomething from B.a.OnEvent

EDIT一个解决方案是添加

void Add(Action handler) 
{ a.OnEvent += handler}

void Remove(Action handler) 
{ a.OnEvent -= handler }

但我想使用+= & -= 语法。

c# delegates action
1个回答
1
投票

找到了

public event Action OnEvent
    {
        add { a.OnEvent += value; }
        remove { a.OnEvent -= value; }
    }
© www.soinside.com 2019 - 2024. All rights reserved.