我有一个基类<td>
{{true == patient.Alcoholic ? 'Yes' : 'No' }}
</td>
,有两种方法:
MyBaseClass
该基类有一些实现,它们都提供完全不同的数据。有些可能提供int,有些可能提供Vector2,或某些复杂类型。我无法在编译时说出什么。
我想做的是添加两个不同的GetProvidedData()调用的返回值。 类似的东西:
public abstract class Baseclass
{
public abstract Type GetProvidedType();
public abstract object GetProvidedData();
}
当然,这会导致错误CS0019:运营商&#39; +&#39;不能应用于类型&#39;对象&#39;的操作数。和&#39;对象&#39;。
任何想法如何解决这个问题?
答案 0 :(得分:1)
一种简单的方法是构建一个Add函数,该函数接受不确定数量的参数并使用类型检查来添加。
这种方法执行速度很慢,需要手动实现每种支持类型,并要求您知道返回值类型。但它确实有效。
using System;
namespace AddExample
{
class Program
{
static void Main(string[] args)
{
float result = Add(20, 20.3f);
Console.WriteLine("Result: {0}", result);
Console.ReadLine();
}
private static float Add(params object[] values)
{
float result = 0;
foreach (var value in values)
{
if (value is int)
{
result += (int) value;
}
else if (value is float)
{
result += (float) value;
}
else
{
throw new NotSupportedException("Add does not support type");
}
}
return result;
}
}
}
相关问题,如果您想采用通用方式:where is op_addition in [int,float,double]