我是C#的新手。我怀疑,如何使用ClassA
在ClassB
中添加方法。
例如,我遵循以下代码:
public ClassA{
method1(){}
method2(){}
}
public ClassB{
//Here i want add another method for `ClassA`
}
有可能吗?
答案 0 :(得分:1)
不清楚您到底想要什么,但是继承是一种解决方案:
public ClassB {
public method3() {};
}
public ClassA : ClassB { // now ClassA has method3 too
method1(){}
method2(){}
}
答案 1 :(得分:1)
听起来您想要的是extension method。文档的第一行说:
扩展方法使您可以将方法“添加”到现有类型 无需创建新的派生类型,重新编译或其他方式 修改原始类型。
正如您在评论中提到的那样(“它们只是给类名ClassA,而不是.cs文件,因此我无法在ClassA中添加方法”),听起来您没有访问源代码的权限用于ClassA。使用扩展方法,您可以创建自己的方法,可以为ClassA实例调用该方法。
在下面的示例代码中,classA.method3();
是可能的:
class Program
{
static void Main(string[] args)
{
ClassA classA = new ClassA();
classA.method3(); // call the extra ClassA method you wrote
}
}
// This class is assumed to be somewhere that you cannot modify
public class ClassA
{
public void method1() { }
public void method2() { }
}
// This is "ClassB" from your question, but I've renamed it to "ExtensionMethods"
public static class ExtensionMethods
{
public static void method3(this ClassA classA) { }
}