哪种设计模式用于为类提供额外的属性?

Mar*_*ijn 4 c# design-patterns winforms

当你有一个TableLayoutPanelon Form并且你将Label一个单元拖到一个单元格中时,Label控件上有一些属性可用.我认为Tooltip在窗体上拖动控件时会使用相同的构造.

我想知道使用哪种设计模式来实现这一目标.这是装饰模式吗?

que*_*rin 7

你所看到的是Extender Providers.

例如,将ToolTip组件添加到表单时,它会向该表单上的每个控件提供一个名为ToolTip的属性.然后,ToolTip属性将出现在任何附加的PropertyGrid控件中. http://msdn.microsoft.com/en-us/library/ms171836.aspx

我无法想象一个众所周知的模式,它描述了它们的工作原理,但机制很简单.

你必须实施IExtenderProvider.WinForms Designer将CanExtend在表面上调用彼此的控件,并且扩展器可以指定它是否为每个控件提供其他属性.

public interface IExtenderProvider {
    bool CanExtend(object extendee);
}
Run Code Online (Sandbox Code Playgroud)

将使用ProvidePropertyAttribute方法声明其他控件将扩展的实际属性以提供值.