gpt4 book ai didi

c# - 静态类派生自基更改成员

转载 作者:行者123 更新时间:2023-11-30 21:27:56 25 4
gpt4 key购买 nike

在 C# 中,静态类不能从除对象之外的任何其他类派生。目前我有这个基类:

public static class BaseModule
{
public static string UsedSource {get; set;}

public static Write(string text)
{
OtherStaticClass.Log(UsedSource, text);
}
}

现在,根据我使用的类,我想更改 UsedSource

// this does not work
internal static class ModuleA : BaseModule
{
static ModuleA(){
UsedSource = "A" // just an example
}
}

// this does not work
internal static class ModuleB : BaseModule
{
static ModuleB(){
UsedSource = "B" // just an example
}
}

应该这样调用

ModuleA.Write("Hi");
ModuleB.Write("Hi");

这种方法行不通,因为静态类只能从对象派生。还有其他方法可以改变属性吗?

最佳答案

这里有很多静态类,我不完全确定它们是否必要。除了您拥有的 OtherStaticClass 引用之外,我的示例不使用静态类。我知道这可能不是您要找的;给这只猫剥皮的方法很多。

public abstract class BaseModule
{
public string UsedSource { get; set; }

public void Write(string text)
{
OtherStaticClass.Log(UsedSource, text);
}
}

public class ModuleA : BaseModule
{
public ModuleA()
{
UsedSource = "A";
}
}

public class ModuleB : BaseModule
{
public ModuleB()
{
UsedSource = "B";
}
}

然后要获得输出,您只需创建 ModuleAModuleB 的新实例。

var moduleA = new ModuleA();
var moduleB = new ModuleB();
moduleA.Write("Hi");
moduleB.Write("Hi");

关于c# - 静态类派生自基更改成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56970150/

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