为啥 IS Extender Provider Properties 在 C# 窗口应用程序的 Designer 中丢失?
Posted
技术标签:
【中文标题】为啥 IS Extender Provider Properties 在 C# 窗口应用程序的 Designer 中丢失?【英文标题】:why IExtenderProvider Properties are lost in Designer in C# window appliaction?为什么 IS Extender Provider Properties 在 C# 窗口应用程序的 Designer 中丢失? 【发布时间】:2009-06-12 12:20:44 【问题描述】:我已经为控件创建了一个 IExtenderProvider (Extender)。使用 Extender,我正在迭代控件集合并对其进行验证。它工作正常。但是,有时在更改某些设计时,或者当设计师刷新时(同时删除一些事件从代码),扩展器提供的属性(验证顺序和组,在我的例子中)从设计器中丢失,控件本身没有添加到扩展器集合中。所以,验证由应用程序完成崩溃(当然还有应用程序本身)。我在 IExtenderProvider 中也有 ShouldSerialize 和 Reset 方法。但没有任何帮助。请指导我如何让所有控件始终对扩展程序可见。
谢谢, 马蒂
【问题讨论】:
【参考方案1】:这有时会在 Extender 中出现异常时发生。如果发生这种情况,您将需要在设计时调试您的扩展器。我今天不得不这样做几次。查看Debugging Design-Time Controls,它应该可以帮助您开始
有时会发生这种情况,因为您更改了 Extender 的属性和方法,并且“序列化”值不再合适。
【讨论】:
【参考方案2】:Tim Van Wassenhove 的这篇题为“Bending the code generation of IExtenderProvider to your will”的文章可能有与您的问题相关的解决方案。它描述了为您的 IExtenderProvider 实现构建自定义序列化程序,这样做可以缓解此处所述的问题。
文章中的大部分相关信息也被another answer here on Stack Overflow引用。
【讨论】:
【参考方案3】:以下答案对于 OP 来说绝对是迟到的,但可能对其他人有所帮助。
我遇到了同样的问题:属性要么丢失,要么根本不显示。就我而言,问题在于,使用 ProvideProperty、CanExtend 以及 SetXXX 和 GetXX 方法指定的类型不一样。例如,ProvideProperty 和 CanExtend 指定 'Control' 作为类型,但 SetXXX 和 GetXXX 方法指定 'object' 作为第一个参数。
所以,一旦我确定,对于在 ProvideProperty 中指定的每一个类型,我都有匹配的 GetXXX 和 SetXXX,一切都按预期工作。
也许这会有所帮助。
注意:修复代码后,我必须重新启动 Visual Studio。
【讨论】:
以上是关于为啥 IS Extender Provider Properties 在 C# 窗口应用程序的 Designer 中丢失?的主要内容,如果未能解决你的问题,请参考以下文章
THMBurp Suite:Extender(Burp Suite-扩展器)-学习
Jetty 更新到 9.4.x 后:缺少约束:Require-Capability: osgi.extender;过滤器:=“(osgi.extender=osgi.serviceloader.pro
CreateDatabase is not supported by the provider
为啥第二个(兄弟)React Context Provider 不起作用?或者,如果上面有同级 Context Provider,为啥 React Context Provider 不起作用