0
我正在重構一些使用具有out參數的方法的代碼。我並不是特別反對參數,但是對於我在做的事情,我很少需要超過一個值。通用代理的擴展方法
我有一半具有相同簽名 「無效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;
}
}
現在我有點撕裂。一方面,這是一個相當優雅的解決方案,另一方面,如果您之前沒有看到過這種風格,那麼它不完全直觀。
因此,在我再次撕毀並做其他事之前,您的想法是什麼?你將如何處理上述重構?我的第三個選擇是返回一個有效載荷類,其中包含所有out參數設置屬性。這可能比我之前所做的那樣清晰,但覺得不太... ...樂趣
是的,我是誰口口聲聲說「清晰度勝過簡潔」是同一個人:?/
嗯,是的,我可以看到如何更清晰。好吧,我會玩一玩。有一些觀點:) – Ian