调用在实现者的接口上工作的扩展方法似乎需要使用this关键字.这看起来很奇怪.
有谁知道为什么?
有没有更简单的方法来获得接口的共享实现?
当我遭受多重继承/混合撤销时,这让我感到烦恼.
玩具示例:
public interface ITest { List<string> TestList { get; } } public static class TestExtensions { private const string Old = "Old"; private const string New = "New"; public static void ManipulateTestList(this ITest test) { for (int i = 0; i < test.TestList.Count; i++) { test.TestList[i] = test.TestList[i].Replace(Old,New); } } } public class Tester : ITest { private List<string> testList = new List<string>(); public List<string> TestList { get { return testList; } } public Tester() { testList.Add("OldOne"); testList.Add("OldTwo"); // Doesn't work // ManipulateTestList(); // Works this.ManipulateTestList(); } }