C# 是否可以自定义/覆盖保留其类名的类?

标签 c# class inheritance namespaces overriding

如果我有一个使用 namespaceX.classB 的类 namespaceX.classA,是否可以通过使用相同的命名空间(?)和类名来自定义/覆盖/扩展 classB 而不会破坏 ClassA?如果是这样,请您解释一下我是如何去做的?

示例通过在不破坏 ListView 的情况下向 ColumnHeaderCollection 添加方法进行扩展

最佳答案

也许吧。这取决于你想做什么以及你是否可以修改 B 类。

看看Extension MethodsPartial Classes .

扩展方法 让您可以在另一个静态类(例如 ClassBExtensions)中创建静态方法,您可以像在 ClassB 上一样调用它们。但是,您将无权访问扩展类中的任何私有(private)或 protected 成员。

Partial Classes 允许您直接向类添加成员,但您需要能够修改 ClassB 的源代码,因为它需要在两个地方声明为 partial。 Partial 实际上只是一种将类定义拆分为多个文件的方法。

听起来你想要一个扩展方法。

 public static class ColumnHeaderCollectionExtensions
 {
     public static void NewMethod(this ColumnHeaderCollection collection)
     { 
         //do stuff here
     }
 }

然后你可以这样调用它:

myListView.Columns.NewMethod();

关于C# 是否可以自定义/覆盖保留其类名的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7983743/

相关文章:

c++如何为另一个类中的定义类分配特定值

javascript - 正在更改的对象的属性,即使它们应该由 Value 传递

c++ - 相似类型类的设计

c# - 捕获的异常本身为空!

c# - 在 Cake 脚本中找不到 Linq 扩展方法

python - 在Python中,如何继承并重写类实例上的方法,并将新版本分配给与旧版本相同的名称?

inheritance - 通过 Go 中的接口(interface)修改结构成员

c++ - 如何继承一个已经提前声明的类

c# - 使用 C# 在 ASP.Net 中使用 Google Drive API 将文件上传到 Google Drive

c# - 如何让ListViewItem的部分文字加粗?