我有一个类描述一个数组,可以序列化为自定义二进制格式,并返回。该数组有一个单一的类型参数,指定其值,可以是int
,double
或bool
。我想写这样的:将C#类型参数约束为一系列基元类型?
class BArray<T> where T: int, double, bool {
BArray(T[] values) { ... }
byte[] Encode() { ... }
T[] Decode(byte[] bytes) { ... }
...
}
我知道这不能编译,但有没有办法做到这一点?如果不是,那么接下来做什么最好的方法是什么?实质上,根据数组值的类型,我需要Encode
和Decode
方法的不同行为。此外,我希望用户类不担心了不同的实现,即下面应该工作:
var ints = new int[] { 1, 2, 3 };
var intB = new BArray(ints);
var dbls = new double[] { 3, 4 };
var dblB = new BArray(dbls);
但使用未实现的类型应该失败:
var strs = new string[] { "this", "should", "fail" };
var strB = new BArray(strs); // TYPE ERROR!
谢谢!
[通用方法与多个约束]的可能重复(http://stackoverflow.com/questions/588643/generic-method-with-multiple-constraints) –
@EhsanSajjad不,请注意,我只有一个类型参数。 ( – liszt