gpt4 book ai didi

c# - 注入(inject)继承

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:22 25 4
gpt4 key购买 nike

是否可以在继承类中重新调整调用的用途,我需要在 TheLastClass 处理上下文之前和之后对 TheFirstClass 中的上下文做一些额外的事情.理想情况下,我不想在 TheLastClass 的所有实例中重命名进程覆盖。我试图只添加另一个抽象类,但继承阻止了第二个同名抽象类。

void Main()
{
var context = new ContextClass();
var LastClass = new TheLastClass();
LastClass.CallTheProcess(context);
}

// Define other methods and classes here
abstract class TheBaseClass
{
public abstract void Process(ContextClass context);

public void CallTheProcess(ContextClass context)
{
// other necessary stuff
context.test = "Base Class";
Process(context);
}
}

class TheFirstClass : TheBaseClass
{
//public abstract void Process(ContextClass context)
public override void Process(ContextClass context)
{
context.test = "success";
Process(context);//How can I call inherited overrides? and not infinite loop
}
}

class TheLastClass : TheFirstClass
{
public override void Process(ContextClass context)
{
//do stuff with the context
if(context.test == "success")
{
"ThisWorked".Dump();
//how do I get here?
}
}
}

class ContextClass
{
public string test;
}

最佳答案

您可以使用 base 关键字。

void Main()
{
var context = new ContextClass();
var LastClass = new TheLastClass();
LastClass.CallTheProcess(context);
}


abstract class TheBaseClass
{
public abstract void Process(ContextClass context);

public void CallTheProcess(ContextClass context)
{
this.Process(context);
// other necessary stuff
context.test = "Base Class";
}
}

class TheFirstClass : TheBaseClass
{
public override void Process(ContextClass context)
{
context.test = "success";
// some operations
}
}

class TheLastClass : TheFirstClass
{
public override void Process(ContextClass context)
{
base.Process(context); // from the TheFirstClass
// other operations
}
}

然后,如果您调用 LastClass.CallTheProcess(context);,您将获得以下命令:

  1. TheBaseClass.CallTheProcess
  2. TheFirstClass.Process
  3. TheLastClass.Process(//其他操作部分)

关于c# - 注入(inject)继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30446530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com