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