【发布时间】:2009-04-01 16:09:13
【问题描述】:
我有一个 Windows 应用程序,它允许从平板电脑上的笔输入进行输入。
当需要时,一个表单 (A) 将打开另一个表单 (B) 以允许用户输入。
在表格(B)中,我有以下函数来返回用户用笔输入的解码值。
private object decodedValue;
public T GetDecodedValue<T>()
{
return (T)decodedValue;
}
当用户输入一个值时,在表单B中,我将结果存储如下
string sResult = myInkCollector.Ink.Strokes.ToString();
decodedValue = (object)sResult;
现在在表格 A 中需要两个字段来允许数据输入,一个是数量 (int),另一个是价格 (double)。我想让表单 B 适应不同的类型,因此这就是我使用泛型的原因。
所以当表单B被接受时,它会返回表单A并使用以下代码
int qty = formB.GetDecodedValue<int>();
或
double price = formB.GetDecodedValue<double>();
这是发生错误的地方,当调用函数“formB.GetDecodedValue”时,它会在以下位置引发 InvalidCastException
return (T)decodedValue;
关于我做错了什么有什么想法吗?我使用泛型使事情复杂化了?
【问题讨论】: