[编辑] :或者不...这实际上是正确的代码,传入的值确实为空。无视。
我正在尝试设置从DataRow到我的自定义SerializableData类的隐式转换。这是为了允许StateServer会话保存我们以前保留在DataRow对象中的数据。
我正在寻找从我的自定义类转换为外部类的资源:
http://msdn.microsoft.com/en-us/library/z5z9kes2(v=vs.71).aspx
class MyType
{
public static implicit operator int(MyType m)
{
// code to convert from MyType to int
}
}
但我需要反过来做。我试过了:
[Serializable]
public class SerializableData
{
private Hashtable _table;
public SerializableData(DataRow row)
{
_table = new Hashtable();
foreach (DataColumn column in row.Table.Columns)
_table.Add(column.ColumnName, row[column.ColumnName]);
}
public object this[string columnName]
{
get
{
return _table[columnName];
}
set
{
_table[columnName] = value;
}
}
public static implicit operator SerializableData(DataRow row)
{
return new SerializableData(row);
}
}
它编译,并在每次将DataRow分配给SerializableData属性时被调用......但是,'row'始终为null。这个论点没有传入。
有没有人以这种方式设置隐式转换?我还有另一种方法吗?