我有一个基本抽象类来实现模板方法模式。
public abstract class OptionalParameter
{
//Template Method Pattern
public string GenerateQueryString()
{
return this.GenerateQueryStringWithParameters();
}
}
而且我有一个适用于所有 OptionalParameter 类型的扩展方法。
public static class OptionalParameterExtensions
{
public static string GenerateQueryStringWithParameters(this OptionalParameter optionalParameters)
{
}
}
我从 OptionalParameter 继承了一个名为 CalendarEventParameter 的类。
public class CalendarEventParameters : OptionalParameter
{
}
当我想创建 CalenderEventParameter
的实例时,我看到了抽象类中的 GenerateQueryString()
方法和 GenerateQueryStringWithParameters()
扩展方法。
我不想从派生类中看到它。我试图将扩展方法签名为 Private,但这样我也无法从我的抽象类访问。
是否可以只从基本抽象类调用扩展方法?
最佳答案
没有。扩展方法通常不能对派生类隐藏。
只有当其他类在另一个程序集中而不是扩展方法的所有调用者时才有可能(您可以将扩展方法标记为 internal
然后)。
您还可以将扩展方法放在另一个 namespace 中,您可以将其包含在要调用扩展方法的每个类文件中。这不是真正的隐藏,但它可以完成这项工作。
关于c# - 如何隐藏派生类的扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31788804/