【问题标题】:Override protected virtual without inheritance在不继承的情况下覆盖受保护的虚拟
【发布时间】:2012-06-13 05:01:48
【问题描述】:

我的应用中有一堆 DataGrid。我需要为所有这些覆盖一些受保护的虚拟方法。有什么比使用从不那么熟悉的名称派生的 DataGrid 类更好的方法吗?我希望像附加属性这样的解决方案能够使用自定义属性指定覆盖行为。

【问题讨论】:

  • 我不确定我是否明白你在问什么。能否请您改述一下这个问题?
  • 这种情况下继承有什么问题?问题是不能调用你的派生类DataGrid,而必须选择另一个名字?如果是的话,想想如果有大量同名的类做不同的事情是多么奇怪。
  • 我想做的是修复 WPFToolkit DataGrid 奇怪的错误stackoverflow.com/questions/4017786/… 即覆盖 OnCreateAutomationPeer()。但我不想对整个应用程序代码进行更改。我不认为这意味着 DataGrid 会有所不同。我只是想摆脱奇怪的异常。

标签: c# .net wpf datagrid wpftoolkit


【解决方案1】:

在 C# 中,如果不继承该方法,则无法覆盖该方法。 MSDN-Override。 覆盖方法的唯一方法是从该基类继承。您是否有不想从基类继承的原因?

【讨论】:

    【解决方案2】:

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

    using DatGrid = My.NameSpace.MyOwnDataGrid;
    

    您仍然必须使用 datagrids 对每个文件执行此操作,这会使代码阅读起来有些混乱,因此我认为最好将“new DataGrid(”全局搜索/替换为“new MyOwnDataGrid( "然后你就完成了。

    【讨论】:

    • 谢谢,但我所有的 DataGrid 都是在 XAML 中定义的,而不是新的。
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2012-05-19
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 2016-03-17
    • 1970-01-01
    相关资源
    最近更新 更多