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