对基础 class 中虚方法的所有实现应用相同的覆盖
Apply same override to all implementations of virtual method in base class
我有一个来自 nuget 包的摘要 class,它在我的 C# 项目中实现了大约 30 次不同的时间。如果可能的话,我想在实现这个 class 时避免代码重复。
假设我有以下摘要 class (来自 nuget 包):
public abstract class Code
{
protected Code(string type);
public string Type { get; }
public virtual string GetCodeString { get; }
}
我想添加一个方法,该方法将从我的项目的配置文件中获取一个值,并在抽象 class 的每个实现的 GetCodeString 的 getter 函数中使用它。
使用如下 class:
public static class CodeExtensionMethods
{
public static string GetCodeStringFromAppSettings(this Code code)
=> ConfigurationManager.AppSettings["CodeString"] ?? String.Empty;
}
我想用 GetCodeStringFromAppSettings() 为我项目中代码的每个实现覆盖 GetCodeString getter。
要完成此操作,我似乎需要将此扩展方法复制粘贴到每个代码实现中。
有没有一种方法可以在各种实现之前覆盖代码 class 的虚拟方法?
当您无法访问基 class?
时,是否有更好的方法来实现重写方法的功能
public abstract class CodeSub : Code
{
public override string GetCodeString => ConfigurationManager.AppSettings["CodeString"] ?? String.Empty;;
}
继承自您自己的摘要class。
我有一个来自 nuget 包的摘要 class,它在我的 C# 项目中实现了大约 30 次不同的时间。如果可能的话,我想在实现这个 class 时避免代码重复。 假设我有以下摘要 class (来自 nuget 包):
public abstract class Code
{
protected Code(string type);
public string Type { get; }
public virtual string GetCodeString { get; }
}
我想添加一个方法,该方法将从我的项目的配置文件中获取一个值,并在抽象 class 的每个实现的 GetCodeString 的 getter 函数中使用它。 使用如下 class:
public static class CodeExtensionMethods
{
public static string GetCodeStringFromAppSettings(this Code code)
=> ConfigurationManager.AppSettings["CodeString"] ?? String.Empty;
}
我想用 GetCodeStringFromAppSettings() 为我项目中代码的每个实现覆盖 GetCodeString getter。 要完成此操作,我似乎需要将此扩展方法复制粘贴到每个代码实现中。
有没有一种方法可以在各种实现之前覆盖代码 class 的虚拟方法?
当您无法访问基 class?
public abstract class CodeSub : Code
{
public override string GetCodeString => ConfigurationManager.AppSettings["CodeString"] ?? String.Empty;;
}
继承自您自己的摘要class。