如何向类添加功能

时间:2011-06-16 16:20:03

标签: asp.net oop c#-3.0

我有一堆课程,我希望能够“固定”一些功能。

该功能涉及实现属性并能够执行使用该属性的操作以及每个类独有的其他成员。感觉就像一个界面和一个抽象的类混合在一起。我不能使用抽象类方法,因为这些类已经是许多不同类的子类。我可以使用一个接口,但我在哪里放置代码?我厌倦了在每节课中一遍又一遍地写作。

以下是此问题的一个实例:我在C#,ASP.NET,Web表单中工作。我想要“固定”的类是从许多不同的Web控件继承的自定义控件(.ascx,.cs)。该功能与在创建子控件后在页面上注册一些脚本有关。

感谢任何见解,谢谢。

3 个答案:

答案 0 :(得分:1)

Extension methods可能会提供您正在寻找的内容。

答案 1 :(得分:1)

我认为visitor pattern可能对此有所帮助。来自Wikipedia

  

这种分离的实际结果是能够在不修改这些结构的情况下向现有对象结构添加新操作。

你遇到了复杂的继承链的常见问题,它们很难修改。

答案 2 :(得分:1)

使用composite pattern。创建一个新对象,实现您尝试“坚持”的功能。创建一个表示此新对象的API的接口。然后在对象上实现接口:

public class MyCompositeObject: Base, IBoltOn
{
    protected IBoltOn BoltOn = new BoltOn();

    # region IBoltOn members
    public void SomeMethod()
    {
        BoltOn.SomeMethod();
    }
    public sometype SomeProperty {
        get {
           return BoltOn.SomeProperty;
        }
        set {
            BoltOn.SomeProperty=value;
        }
    }
    # endregion
}