我需要我的 Criterion 类在其构造函数中接受各种类型,并保留原始类型和每个类型的值。该术语中的参数数量可以从 0 到任何值。
/* Examples of calls:
var c = new Criterion("IsActive", OperationCode.EQUALS, false);
var c = new Criterion("AgeRange", OperationCode.BETWEEN, 18, 35);
*/
public Criterion(string fieldName, OperationCode op, params object[] value) {
string FieldName = fieldName;
OperationCode Op = op;
object[] Value = value;
string display = String.Format("{0} {1} {2}", FieldName, Op, Value[0]);
}
在任何情况下, Value 的元素都返回System.String[],而不是它们的值。对于第一个示例调用, display 将设置为IsActive EQUALS System.String[]。Convert.ToString(Value[0]) 没有帮助,.ToString()也没有帮助。想法?
编辑#1:Dmitry S 建议进行一项测试,开辟一条探索之路。我用“false”作为唯一的 value[] 参数来调用 Criterion。在即时窗口中,打印 value.GetType() 表明它如预期的那样是一个 Object[]。value[0].GetType() 显示它是一个 String[]。虽然它最初是一个字符串,但我不知道为什么 .IsArray 在这种情况下是真的。当我用整数 14 调用它时,value[0].GetType() 显示一个非数组 Int32。到目前为止,打字是有意义的。但我对检索值感兴趣,而不是类型。