Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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
C# 在不继承的情况下重写受保护的虚拟机_C#_.net_Wpf_Datagrid_Wpftoolkit - Fatal编程技术网

C# 在不继承的情况下重写受保护的虚拟机

C# 在不继承的情况下重写受保护的虚拟机,c#,.net,wpf,datagrid,wpftoolkit,C#,.net,Wpf,Datagrid,Wpftoolkit,我的应用程序中有很多数据网格。我需要为它们重写一些受保护的虚拟方法。有什么比用不太熟悉的名字从DataGrid类派生更好的吗?我希望附加属性这样的解决方案能够使用自定义属性指定越界行为。在C#中,如果不从该方法继承,则无法重写该方法。 重写方法的唯一方法是从该基类继承。您不想从基类继承有什么原因吗?您必须重写。在您自己的MyOwnDataGrid(或更短的名称)中重写该方法。然后在使用datagrid的任何地方使用该类。如果你有数百个网格,你必须有一个奇怪的应用程序设计。如果您不想更改创建新Da

我的应用程序中有很多数据网格。我需要为它们重写一些受保护的虚拟方法。有什么比用不太熟悉的名字从DataGrid类派生更好的吗?我希望附加属性这样的解决方案能够使用自定义属性指定越界行为。

在C#中,如果不从该方法继承,则无法重写该方法。
重写方法的唯一方法是从该基类继承。您不想从基类继承有什么原因吗?

您必须重写。在您自己的MyOwnDataGrid(或更短的名称)中重写该方法。然后在使用datagrid的任何地方使用该类。如果你有数百个网格,你必须有一个奇怪的应用程序设计。如果您不想更改创建新DataGrid()的每个位置,我相信您可以更改using指令

using DatGrid = My.NameSpace.MyOwnDataGrid;

对于使用datagrids的每个文件,您仍然必须这样做,这会使代码读起来有点混乱,因此我认为最好只对“new DataGrid”(“到”new MyOwnDataGrid(“)你已经完成了。

我不确定我是否理解你的问题。请你重新表述一下这个问题好吗?在这种情况下继承有什么问题吗?问题是你不能调用派生类DataGrid,但必须选择另一个名称吗?如果是,请想一想,如果有大量同名类都在这样做会有多奇怪事情不同了。我想做的是修复WPFToolkit DataGrid奇怪的错误,即覆盖OnCreateAutomationPeer()。但我不想对整个应用程序代码进行更改。我不认为这意味着DataGrid会做不同的事情。我只是想摆脱奇怪的异常。谢谢,但我所有的DataGrid都是用XAML定义的,而不是用new。