2010-08-21 177 views
0

这里是我的代码:如何检查对象是否为空

public static class SerializationUtil 
{ 
    public static string Serialize(object obj) 
    { 
     if (obj == null) 
      return string.Empty; 

     StringWriter writer = new StringWriter(); 
     new System.Web.UI.LosFormatter().Serialize(writer, obj); 
     return writer.ToString(); 
    } 

    public static object Deserialize(string data) 
    { 
     if (data == null) 
      return null; 
     return (new System.Web.UI.LosFormatter()).Deserialize(data); 
    } 
} 

我遇到的问题是:当我调用序列化方法,如果obj为null,则抛出一个错误。所以我想检查一下obj的值是否为null。我现在放置的代码不起作用,因为当obj值被检查时,它永远不会为null。

解决:

见我的答案

+3

究竟是在哪里抛出异常?你有异常的堆栈跟踪吗? – 2010-08-21 05:36:55

+0

它在新的System.Web.UI.LosFormatter()。中引发Serialize(writer,obj); – Luke101 2010-08-21 05:38:49

+0

请发布确切的错误信息。 – 2010-08-21 05:41:41

回答

2

好的,我明白了。我查看了异常的细节,并期望对象类是可序列化的。我使课程可串行化,它的工作

using System; 

[Serializable] //the missing piece 
public class RegisterFormData 
{ 
    public string username { get; set; } 
    public string pass1 { get; set; } 
    public string pass2 { get; set; } 
    public string email { get; set; } 
    public string firstname { get; set; } 
    public string lastname { get; set; } 
} 
+0

你知道,我会在评论中提出建议,然后认为这不可能是因为这个原因吧? – 2010-08-21 05:48:12

+0

你应该更新自己的问题。 – Kangkan 2010-08-21 10:58:46

+0

他可以回答他自己的问题... – 2010-08-21 18:24:10

1

后我真的不觉得有什么你所描述的是可能的。如果您检查了obj不仅仅是上面几行,那么它不为空。如果您获得NullReferenceException,则可能是由于其他其他为空,可能在Serialize方法本身内。