自定义ValueObject的转换问题
我有一个自定义的ValueObject Str,用来封装string类型:
public class Str
{
string _stringValue;
protected Str(string arg)
{
_stringValue = arg;
}
public static Str valueOf(string arg)
{
return new Str(arg);
}
public static implicit operator Str(System.String arg)
{
return Str.valueOf(arg);
}
public override string ToString()
{
return stringValue;
}
...
}
当我在VS2005 的WinForm里把属性类型是Str的对象绑定到DataGridView上,并在DataGridView编辑此Cell时,会报错:"从 “System .String到 “myli.system .valueObject.Str”的强制转换无效",可是我明明定义了强制转换操作符(implicit operator Str)了呀。请高手们不吝赐教!!
详细错误信息如下:
“DataGridView 默认错误”对话框
DataGridView 中发生以下异常 :
System FormatException :从 “System .String到 “myli.system .valueObject.Str”的强制转换无效 。 -->
System InvalidCastException :从 “System .String到 “myli.system .valueObject.Str”的强制转换无效 。
在 System .Convert .DefaultToType (IConvertible valu, Type targetType ,IFormatProvider provider )
在 System .String.System IConvertible.ToType (Type type ,IFormatProvider provider)
在 System .Convert .ChangeType (Object value,Type conversionType ,IFormatProvider provider )
在 System .Windows .Forms.Formatter .ChangeType (Object value,Type type ,IFormatProvider formatInfo )
-内部异常堆栈跟踪的结尾 ---
在 System .Windows .Forms.Formatter .ChangeType (Object value,Type type ,IFormatProvider formatInfo )
在 System .Windows .Forms.Formatter .ParseObjectInternal(Object value,Type targetType ,Type sourceType ,
TypeConverter targetConverter ,TypeConverter sourceConverter , IFormatProvider formatInfo, Object
formattedNullValue)
在 System .Windows .Forms.Formatter .ParseObject(Object value, Type targetType ,Type sourceType ,
TypeConverter targetConverter ,TypeConverter sourceConverter , IFormatProvider formatInfo, Object
formattedNullValue,Object dataSourceNullValue )
在 System .Windows .Forms.DataGridViewCell.ParseFormattedValueInternal (Type valueType ,Object
formattedValue, DataGridViewCellStyle cellSty, TypeConverter formattedValueTypeConverter , TypeConverter
valueTypeConverter )
在 System .Windows .Forms.DataGridViewCell.ParseFormattedValue (Object formattedValue, DataGridViewCellStyle
cellSty, TypeConverter formattedValueTypeConverter , TypeConverter valueTypeConverter )
在 System .Windows .Forms.DataGridView .PushFormattedValue DataGridViewCell & dataGridViewCurrentCell,Object
formattedValue, Exception& exception )
要替换此默认对话框,请处理DataError 事件。