C# 对于从接口派生的类,返回类型比对象更好
我有一个带有C# 对于从接口派生的类,返回类型比对象更好,c#,C#,我有一个带有IDataProcessor类型变量的类 class MyClass { IDataProcessor _processor; ... } public interface IDataProcessor { object Process(int a, int b); } 以及一些实现 class IntDataProcessor : IDataProcessor { public object Process(int a, int b) {
IDataProcessor
类型变量的类
class MyClass
{
IDataProcessor _processor;
...
}
public interface IDataProcessor
{
object Process(int a, int b);
}
以及一些实现
class IntDataProcessor : IDataProcessor
{
public object Process(int a, int b)
{
return (int) (a + b);
}
}
class DoubleDataProcessor : IDataProcessor
{
public object Process(int a, int b)
{
return (double) (a + b);
}
}
有没有办法避免使用对象
返回类型
p.S.:过程
方法的实际功能比我在这里介绍的更复杂。例如,DoubleDataProcessor
实际上将两个整数转换为一个double。泛型
将您的界面更改为:
public interface IDataProcessor<T>
{
T Process(T a, T b);
}
公共接口IDataProcessor
{
T过程(ta,tb);
}
然后,其他两位对此进行了讨论:
class IntDataProcessor : IDataProcessor<int>
{
public int Process(int a, int b)
{
return a + b;
}
}
class DoubleDataProcessor : IDataProcessor<double>
{
public double Process(double a, double b)
{
return a + b;
}
}
类IntDataProcessor:IDataProcessor
{
公共整数进程(整数a、整数b)
{
返回a+b;
}
}
类DoubleDataProcessor:IDataProcessor
{
公共双流程(双a、双b)
{
返回a+b;
}
}
那么,您应该返回什么(可能是另一个接口)取决于该接口的用途,您根本没有详细说明。对象
返回类型有什么问题?这在这里很有意义。到目前为止,这类操作似乎不需要包装器接口,它们是特定的,转换器类更合适,如果您确实需要它是泛型的,而不是AntP所指出的,您可以在“converter/processor”类中返回接口。@RohitVats它有一种误用策略模式的奇怪气味。另外,过程
是在一个大数组上迭代的,因此可能会有一些额外的装箱/拆箱开销。在没有更多上下文的情况下,什么使您认为泛型是合适的?另一个强类型接口可能就可以了。这在我看来很难看。但是作为主类中的IDataProcessor
类型变量应该声明什么呢?@lejon,不管你需要它是什么。你想问什么?使用泛型,你实际上是在创建多个接口,只需要更少的编写。这在这里可能适用,也可能不适用。在问题编辑:NOT.@AntP之后,将从另一个参数知道类型。泛型的问题是我不能有一个被实例化为ConcreteDataProcessor
的IDataProcessor
。