左のオブジェクトにfunc(または同様のメソッド)を使用する方法があるかどうかを調べようとしています。 例:C#func <>左のオブジェクトに適用
member1.MyFunction()
ここでは、簡略化した使い方を示します。 ClassBのListとClassBの要素を集計するメソッドを含むClassAを取得しました。そしてclassBはdouble型のmemberXとmemberYという2つの属性を持っています。関数は、ClassBのメンバーを合計することを選択するために使用されます。
私はエラーがあるtheSum += TheList[i].TheFunction();
を書き行でエラーを持っている
:CS1061 C#はの定義との最初の引数を受け入れていない拡張メソッドが含まれていません
タイプを見つけることができます(使用するディレクティブまたはアセンブリ参照がありませんか?)
誰にも回避策がありますか?私の研究は、ジェネリック関数の左側に適用されるものに私を導くことはできませんでした。
public class ClassA
{
public List<ClassB> TheList;
public ClassA()
{
ClassB m1 = new ClassB(1, 2);
ClassB m2 = new ClassB(1, 2);
ClassB m3 = new ClassB(1, 2);
TheList= new List<ClassB>() { m1, m2, m3 };
}
private double CalculateSum(Func<double> TheFunction)
{
double theSum = 0;
for (int i = 0; i < TheList.Count(); i++)
{
theSum += TheList[i].TheFunction();
// I'd like to use the previous line instead of having to write
// a function for both of the following.
// theSum += TheList[i].GetMember1();
// theSum += TheList[i].GetMember2();
}
return theSum;
}
}
public class ClassB
{
private double memberX;
private double memberY;
public ClassB(double x, double y)
{
memberX = x;
memberY = y;
}
public double GetMember1() { return memberX; }
public double GetMember2() { return memberY; }
}
私はそれを避けようとしていましたが、答え(および検索結果)を見ると、Func <>または他の同様の方法を使用する他の方法はないと信じています。 –
funcをオブジェクトの左側に適用する場合は、私の更新を参照してください。 –