如果我有一个使用 namespaceX.classB 的类 namespaceX.classA,是否可以通过使用相同的命名空间(?)和类名来自定义/覆盖/扩展 classB 而不会破坏 ClassA?如果是这样,请您解释一下我是如何去做的?
示例通过在不破坏 ListView 的情况下向 ColumnHeaderCollection 添加方法进行扩展
最佳答案
也许吧。这取决于你想做什么以及你是否可以修改 B 类。
看看Extension Methods和 Partial 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/