想法是扩展我的功能的扩展方法.
所以不要有这样的东西:
return Add(Add(storage.GetFirst(), 3), 7);
我想要这样的东西:
return storage.GetFirst().Add(3).Add(7);
扩展方法的问题是它们必须在静态类中是静态的.这是我想要做的简化示例.
public class Storage { public int GetFirst() { return 100; } public int GetAll(int x, int y) { // ... return x + y; } } public abstract class MyBase { protected Storage storage; protected MyBase() { storage = new Storage(); } public int Add(int what, int howMuch) { return storage.GetAll(what, howMuch); } } public class MyClass : MyBase { public int method1() { return Add(Add(storage.GetFirst(), 3), 7); //I want have something like this: // return storage.GetFirst().Add(3).Add(7); } }
课程类别Storage,MyBase和MyClass不能是静态的.逻辑是简化的,有简洁的例子,所以类之间的关系必须保持不变.我想要做的是使Add方法成为扩展方法,但保留其他所有"更不一样".
这可能吗?怎么做?
另一种解决方案是让您的Storage类实际存储一些东西:
public class Storage { private int currentValue; public Storage GetFirst() { this.currentValue = 100; return this; } public Storage Add(int toAdd) { this.currentValue += toAdd; return this; } public int GetResult() { return this.currentValue; } }
这样你的电话会是:
int result = new Storage().GetFirst().Add(3).Add(5).GetResult();