为什么IExtenderProvider属性在C#窗口应用程序的设计器中丢失?
我已经为控件创建了IExtenderProvider(Extender)。使用Extender,我正在迭代控件集合并对其进行验证。它可以正常工作。但是,在更改某些设计或刷新设计器(从代码中删除某些事件)时,Extender提供的属性(在我的情况下,验证顺序和组)正在从设计器中丢失,控件本身没有添加到扩展程序集合中。因此,应用程序完成的验证崩溃了(当然还有应用程序本身)。我也应该序列化和重置IExtenderProvider中的方法。但没有任何帮助。请指导我如何使所有控件始终对extender可见 谢谢,为什么IExtenderProvider属性在C#窗口应用程序的设计器中丢失?,c#,winforms,iextenderprovider,C#,Winforms,Iextenderprovider,我已经为控件创建了IExtenderProvider(Extender)。使用Extender,我正在迭代控件集合并对其进行验证。它可以正常工作。但是,在更改某些设计或刷新设计器(从代码中删除某些事件)时,Extender提供的属性(在我的情况下,验证顺序和组)正在从设计器中丢失,控件本身没有添加到扩展程序集合中。因此,应用程序完成的验证崩溃了(当然还有应用程序本身)。我也应该序列化和重置IExtenderProvider中的方法。但没有任何帮助。请指导我如何使所有控件始终对extender可见
Mathi当扩展器中出现异常时,有时会发生这种情况。如果发生这种情况,您将需要在设计时调试扩展器。今天我不得不这样做好几次。看看吧,这应该会让你开始
其他情况下会发生这种情况,因为您更改了扩展程序的属性和方法,“序列化”值不再合适。当扩展程序中出现异常时,有时会发生这种情况。如果发生这种情况,您将需要在设计时调试扩展器。今天我不得不这样做好几次。看看吧,这应该会让你开始 其他情况下,这种情况会发生,因为您更改了扩展器的属性和方法,“序列化”值不再合适。这篇由Tim Van Wassenhove撰写的名为“”的文章可能有一个与您的问题相关的解决方案。它描述了为您的IExtenderProvider实现构建一个自定义序列化程序,这样做可能会缓解此处所述的问题 文章中的大部分相关信息也被引用。这篇由Tim Van Wassenhove撰写的题为“可能有一个与您的问题相关的解决方案”。它描述了为您的IExtenderProvider实现构建一个自定义序列化程序,这样做可能会缓解此处所述的问题
文章中的大部分相关信息也被引用。下面的答案肯定会推迟到OP,但可能会帮助其他人 我也有同样的问题:财产要么丢失了,要么根本没有出现。在我的例子中,问题是,ProvideProperty、CanExtend以及SetXXX和GetXX方法指定的类型不同。例如,ProvideProperty和CanExtend将“Control”指定为类型,但SetXXX和GetXXX方法将“object”指定为第一个参数 因此,当我确保ProvideProperty中指定的每个类型都有一个匹配的GetXXX和SetXXX时,一切都按预期进行 也许这有帮助
注意:在修复代码后,我不得不重新启动Visual Studio。下面的答案肯定会推迟操作,但可能会帮助其他人 我也有同样的问题:财产要么丢失了,要么根本没有出现。在我的例子中,问题是,ProvideProperty、CanExtend以及SetXXX和GetXX方法指定的类型不同。例如,ProvideProperty和CanExtend将“Control”指定为类型,但SetXXX和GetXXX方法将“object”指定为第一个参数 因此,当我确保ProvideProperty中指定的每个类型都有一个匹配的GetXXX和SetXXX时,一切都按预期进行 也许这有帮助 注意:修复代码后,我必须重新启动VisualStudio