Please do not focus on the poor overall design我正在处理一个C#、EF驱动的API,在该API中,原始程序员同步地编写所有程序,这导致了极低的性能.我将所有内容都转换为异步1:1,这就产生了一些设计模式问题.
其中一个问题是所有映射器类都直接从一个接口继承,类似于:
Interface IConvertThings<T,S>()
{
public Task<T> ConvertTo(S object);
public Task<T> ConvertFrom(T object);
}
我们已经面临的一个问题是,我们有多个代码重复,其中一个没有值(即您可以ConvertTo,但不能ConvertFrom,反之亦然).为了解决这个问题,我为要继承的所有其他对象创建了一个抽象类:
public abstract class AConvertThings<T,S> : IConvertThings<T,S>
{
public Task<T> ConvertTo(S object) { throw new NotImplementedException(); }
public Task<S> ConvertFrom(T object) { throw new NotImplementedException(); }
}
所有转换类现在都继承自AConvertThings.其目的是,如果一个方法没有在转换类中定义(用"new"来隐藏原始方法),我们将调用AConvertThings方法并报告错误,并让开发人员知道他们在该Converter上调用了一个不完整的方法(因为有些方法应该是单向的).
我遇到的问题是,即使继承类上的关键字为new,AConvertThings类也会在运行时被调用,当继承类具有完全完整的堆栈时会抛出错误.
public async new Task<TYPE> ConvertTo(OTHERTYPE object)
我忽略了什么?