Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么IExtenderProvider属性在C#窗口应用程序的设计器中丢失?_C#_Winforms_Iextenderprovider - Fatal编程技术网

为什么IExtenderProvider属性在C#窗口应用程序的设计器中丢失?

为什么IExtenderProvider属性在C#窗口应用程序的设计器中丢失?,c#,winforms,iextenderprovider,C#,Winforms,Iextenderprovider,我已经为控件创建了IExtenderProvider(Extender)。使用Extender,我正在迭代控件集合并对其进行验证。它可以正常工作。但是,在更改某些设计或刷新设计器(从代码中删除某些事件)时,Extender提供的属性(在我的情况下,验证顺序和组)正在从设计器中丢失,控件本身没有添加到扩展程序集合中。因此,应用程序完成的验证崩溃了(当然还有应用程序本身)。我也应该序列化和重置IExtenderProvider中的方法。但没有任何帮助。请指导我如何使所有控件始终对extender可见

我已经为控件创建了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