我有一个半通用类,它Func<>
从另一个类接收一个来告诉它如何转换数据。以某种精简的方式,它看起来像这样的代码:
public class A
{
public B b;
public void init()
{
b = new B(ConvertRawData);
}
public double ConvertRawData(double rawData)
{
if(rawData == 1023)
RaiseMalfunctionEvent();
return rawData;
}
public void CalculateData(double rawData)
{
b.CalculateData(rawData);
}
}
public class B
{
event EventHandler Malfunction;
Func<double, double> _converter;
public B(Func<double, double> converter)
{
_converter = converter;
}
public void CalculateData(rawData)
{
var myVal = _converter(rawData);
}
}
我想要做的是能够在 B 类中引发一个事件,Func<>
但能够在 B 类中处理该事件。现在该事件实际上是在 A 类中引发的。
所以我的问题是如何在不暴露 B 类中的公共事件处理程序的情况下制作 B 类?或者这甚至可能吗?
编辑 只要它是一个事件而不是一个例外。这是来自传感器的外部数据。传感器发送1023表示它处于错误状态,所以我需要标记数据并通知用户,但它真的是我的程序中的异常吗?