C#:可以不在抽象类上实现 protected 内部抽象吗?

标签 c# abstract-class access-modifiers

我需要在我的抽象基础中更改什么,以便在任何给定场景中只需要一个方法时,实现不必同时实现这两种方法?我的例子是:

internal abstract class BaseBar<T> where T : BaseThing
{
    protected internal abstract T DataFromXmlElements(IEnumerable<XmlNode> nodes);
    protected internal abstract T DataFromXmlElements(IEnumerable<XmlNode> nodes, string[] fieldNames);
}

class FooBarMapper : BaseBar<FooData>
{
    protected internal override SforceObjectValueData DataObjectFromXmlElements(IEnumerable<XmlNode> nodes)
    {
        throw new NotImplementedException();
    }

    protected internal override FooData DataFromXmlElements(IEnumerable<XmlNode> nodes, string[] fieldNames)
    {
        FooData o = new FooData
        {
            bar1 = bar1,
            bar2 = bar2
        };
        return o;
    }
}

干杯。

编辑:我知道这个设计很奇怪/糟糕/愚蠢...我正在处理遗留代码,现在我没有时间进行重构。我正在尝试使用字符串数组添加第二种方法。

最佳答案

也许这对你有用?

internal abstract class BaseBar<T> where T : BaseThing
{
    protected internal abstract T DataFromXmlElements(IEnumerable<XmlNode> nodes, params string[] fieldNames);
}

关于C#:可以不在抽象类上实现 protected 内部抽象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4156533/

相关文章:

c++ - 创建一个没有抽象方法的抽象类

c# - 访问另一个类的 protected 成员

c# - 如何更改用户控件的访问修饰符

java - 从扩展实现中解耦抽象类细节

c# - 访问修饰符会影响扩展方法吗?

C# 参数值转为字符串?

c# - System.Web.Caching.Cache 是否有望在沙箱中工作?

c# - 如何使用 TDD 测试没有 args 构造函数和 setter 的外观类?

c# - .NET Core 2.2 下配置中 AddJsonFile 选项的默认值是什么?

java - 接收派生自抽象类的对象作为方法中的参数