C# 有没有一种方法可以将扩展方法转换为属性?
问题来自两个要求:C# 有没有一种方法可以将扩展方法转换为属性?,c#,extension-methods,C#,Extension Methods,问题来自两个要求: 我正在使用扩展方法扩展一个类(从没有源代码的其他地方) 我将把它绑定到windows窗体控件的一个属性,它需要一个属性 这是我目前的代码: public static class SomeClassExtender { public static string GetSomeProp(this SomeClass instance) { ... } public static void SetSomeProp(this SomeClass instance,
public static class SomeClassExtender
{
public static string GetSomeProp(this SomeClass instance) { ... }
public static void SetSomeProp(this SomeClass instance, string value) { ... }
}
public class SomeClassWrapper
{
private SomeClass instance;
public SomeClassWrapper(SomeClass instance) { this.instance = instance; }
public string SomeProp
{
get { return this.instance.GetSomeProp(); }
set { this.instance.SetSomeProp(value); }
}
}
这些代码确实有效,但我感兴趣的是,是否有更好的方法来实现这一点,可能是属性或其他什么?最好问问为什么不将SomeClass子类化?外部库中的许多方法都返回此类。我认为将它们都转换成子类是很乏味的。@brz我强烈建议不要将外部组件子类化。它给你们无法控制的部件带来了太高的耦合。包装和委派——正如上面的例子所做的那样——允许使用外部组件,而不会造成纠缠的混乱,您将永远无法再次解耦。我个人喜欢OP的方法。有时使用T4文本模板来生成包装器代码是值得的。