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);
}
}
私がやりたいのは、でイベントを発生させることFunc<>
ができるが、そのイベントをクラス B で処理できるようにすることです。現在、イベントは実際にはクラス A で発生しています。
私の質問は、クラス B でパブリック イベント ハンドラーを公開せずにクラス B を作成するにはどうすればよいかということです。それともこれは可能ですか?
編集 例外ではなくイベントである限り。これはセンサーからの外部データです。センサーはエラー状態であることを示すために 1023 を送信するので、データにフラグを立ててユーザーに通知する必要がありますが、それは私のプログラムでは本当に例外でしょうか?