我正在创建一个控制台应用程序。我有一个课,我写了一些方法。现在我想在另一个类中覆盖该类的某些方法。但只有在满足条件时才应该覆盖。
例如,
public partial Class MainClass
{
public string GetPath()
{
string temp = Method1();
return temp;
}
protected virtual string Method1()
{
//logic
}
}
如果满足某些条件,则只应调用重写方法
public partial class ChildClass : MainCLass
{
public override void Method1()
{
//MY Logic
}
}
我怎样才能做到这一点?是否可以这样做?
答案 0 :(得分:6)
在ChildClass
中,您可以执行以下操作:
public partial class ChildClass : MainCLass
{
public override void Method1()
{
if(condition)
{
base.Method1();
return;
}
//YOUR LOGIC
}
}
示例强>
public class A
{
public virtual void MethodA()
{
Console.WriteLine("A:MethodA");
}
}
public class B : A
{
public bool CallBase { get; set; }
public B()
{
CallBase = false;
}
public override void MethodA()
{
if (CallBase)
{
base.MethodA();
return;;
}
Console.WriteLine("B:MethodA");
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
B b = new B();
a.MethodA();
b.MethodA();
b.CallBase = true;
b.MethodA();
A c = new B();
c.MethodA();
A d = new B(true);
d.MethodA();
Console.ReadKey();
}
}
输出
A:方法a B:治法 答:治法 B:治法 答:方法a