パラメータを持つメソッドを使用するコードをリファクタリングしていました。私は特にパラメータを打ち消すわけではありませんが、私がやっていることに対して、私は値のうちの2つ以上を必要とすることはめったにありません。一般的なデリゲートの拡張メソッド
私は、私が言っての簡単な方法たかっ
同じシグネチャ "のボイドGetThings(アウトTの事、アウトx、y)は" と半ダースのメソッドを持っている "GOTY = NewMethod(Tの事を)"
私はこれを思いついた。フォローする質問:
[TestFixture]
public class TestsBase
{
[Test]
public void Test1()
{
Del.ImaExtMethod(2);
Del2.ImanotherExtMethod(2);
}
public static MyDel Del = TestTest;
public static MyDel2<int> Del2 = TestTest;
public static void TestTest(int input, out int output)
{
output = input * 2;
}
}
public delegate void MyDel(int input, out int output);
public delegate void MyDel2<T>(T input, out T output);
public static class TestExts
{
public static int ImaExtMethod(this MyDel del, int input)
{
int result;
del(input, out result);
return result;
}
public static T ImanotherExtMethod<T>(this MyDel2<T> del, T input)
{
T result;
del(input, out result);
return result;
}
}
今、私は少し裂けています。一方ではそれは合理的にエレガントな解決策です。一方、このスタイルを以前に見ていないのであれば、それは直感的ではありません。
だから私はそれをもう一度切り取って何か他のことをする前にあなたの考えは何ですか?上記のリファクタリングにどのように取り組んでいますか?私の3番目の選択肢は、すべてのoutパラメータがプロパティを設定しているペイロードクラスを返すことです。 ?、個人/
ええ、はい私はそれがどのように明確になるか見ることができます。さて、私は遊びに行くでしょう。いくつかの点を持って:) – Ian