类中有个地方,老出错,帮我看看

nbjed 2009-03-20 08:14:04
using System;
using System.Collections;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;

namespace Jedsoft.Common
{
///<Summary>
///Thread safe dictionary template
///</Summary>
[SerializableAttribute()]
// [DefaultMemberAttribute("Item")]
public class SafeDictionary<KeyType, ValueType> : Hashtable, ISerializable
{

#region Fields
///<Summary>
///If true, the dictionary allows null values
///</Summary>
protected bool mAllowNulls;
///<Summary>
///Default value
///</Summary>
protected ValueType mDefaultValue;
#endregion

#region Constructors

///<Summary>
///SafeDictionary constructor
///</Summary>
public SafeDictionary()
{
}


///<Summary>
///Deserialization constructor
///</Summary>
///<Param>
///Streaming context
///</Param>
///<Param>
///Serialization info
///</Param>
public SafeDictionary(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}

#endregion

#region Properties

///<Summary>
///If true, the dictionary allows null values as valid
///</Summary>
public bool AllowNulls
{
get
{
return this.mAllowNulls;
}
set
{
this.mAllowNulls = value;
}
}


public ValueType this[KeyType key]
{
get
{
return (ValueType)base[key];
}
set
{
if ((value == null) && this.mAllowNulls)
{
value = ((ValueType)DBNull.Value);//这里出错:无法将类型“System.DBNull”转换为“ValueType”
}
base[key] = value;
}
}

#endregion

#region Methods

void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
base.GetObjectData(info, context);
}

public bool TryGetValue(KeyType key, out ValueType value)
{
object object1 = base[key];
if ((object1 == DBNull.Value) && this.mAllowNulls)
{
value = default(ValueType);
return true;
}
else if (object1 != null)
{
value = ((ValueType)object1);
return true;
}
else
{
value = this.mDefaultValue;
return false;
}
}

#endregion
}
}

高手帮我解决一下
...全文
144 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyou0204 2009-03-23
  • 打赏
  • 举报
回复
没见过这样的问题,也没用过这个类型,学习一下
xsm545 2009-03-21
  • 打赏
  • 举报
回复
友情帮顶.解决不了..
wsg13793257207 2009-03-21
  • 打赏
  • 举报
回复
没用过该类型,回家学习
nbjed 2009-03-21
  • 打赏
  • 举报
回复
ISerializable
chouto 2009-03-21
  • 打赏
  • 举报
回复
ValueType是什么类型?

ValueType必须是可空的值类型才能像你写的那样转换。
比如: int? i=(int?)null;
nbjed 2009-03-21
  • 打赏
  • 举报
回复
value = ((ValueType)DBNull.Value);//这里出错:无法将类型“System.DBNull”转换为“ValueType”
自己解决不了啊
HsWong 2009-03-21
  • 打赏
  • 举报
回复
错误信息? 看提示解决嘛
wuyq11 2009-03-20
  • 打赏
  • 举报
回复
Object.Equals(obj, System.DBNull.Value)

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧