如果一个类型是可序列化的或具有为其定义的 TypeConverter,则该类型可以存留在 ViewState 中.
我知道我定义的类不是序列化的
只有实现ISerializable才能放在viewstate中。
但是具体怎么做呢?
我知道我定义的类不是序列化的
只有实现ISerializable才能放在viewstate中。
但是具体怎么做呢?
解决方案 »
- C#XML文件读取的问题!!急!!!!麻烦各位大侠看看!!!
- 为什么C#编写的WinForm程序运行起来感觉比较慢啊?
- --==PDF打印==--itext在内存中生成pdf流后不想保存成文件,而是直接在页面上显示怎么搞阿?
- vs2005 中 的 menuStrip 控件 的 MdiList属性在哪里?
- 急了,怎么调出AXMMControl控件
- 如何这样格式化DataGrid将数据源中的0,1值转换成实际的文字(c# winform)
- @@@求方法,sql语句,数据检索!if,else句子狂多怎么办?
- 如何获得datagrid中HyperLinkColumn的DataNavigateUrlField的值?
- C# 行多选 各路神指导一下小弟
- C#报表问题............................
- ado中SelectCommand的commandstring能不能是多条select语句啊?
- 在线等!!!!急, 有关RadioButtonList的问题
public class ChatInfo
自定义类要从ViewState里取出
在自定义类前加
[Serializable]
MSDN的例子:using System;
using System.IO;
using System.Collections;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
// There should be only one instance of this type per AppDomain.
[Serializable]
public sealed class Singleton : ISerializable
{
// This is the one instance of this type.
private static readonly Singleton theOneObject = new Singleton(); // Here are the instance fields.
public String someString;
public Int32 someNumber; // Private constructor allowing this type to construct the Singleton.
private Singleton()
{
// Do whatever is necessary to initialize the Singleton.
someString = "This is a string field";
someNumber = 123;
} // A method returning a reference to the Singleton.
public static Singleton GetSingleton()
{
return theOneObject;
} // A method called when serializing a Singleton.
void ISerializable.GetObjectData(
SerializationInfo info, StreamingContext context)
{
// Instead of serializing this object,
// serialize a SingletonSerializationHelp instead.
info.SetType(typeof(SingletonSerializationHelper));
// No other values need to be added.
} // Note: ISerializable's special constructor is not necessary
// because it is never called.
}
[Serializable]
internal sealed class SingletonSerializationHelper : IObjectReference
{
// This object has no fields (although it could). // GetRealObject is called after this object is deserialized.
public Object GetRealObject(StreamingContext context)
{
// When deserialiing this object, return a reference to
// the Singleton object instead.
return Singleton.GetSingleton();
}
}
class App
{
[STAThread]
static void Main()
{
FileStream fs = new FileStream("DataFile.dat", FileMode.Create); try
{
// Construct a BinaryFormatter and use it
// to serialize the data to the stream.
BinaryFormatter formatter = new BinaryFormatter(); // Create an array with multiple elements refering to
// the one Singleton object.
Singleton[] a1 = { Singleton.GetSingleton(), Singleton.GetSingleton() }; // This displays "True".
Console.WriteLine(
"Do both array elements refer to the same object? " +
(a1[0] == a1[1])); // Serialize the array elements.
formatter.Serialize(fs, a1); // Deserialize the array elements.
fs.Position = 0;
Singleton[] a2 = (Singleton[]) formatter.Deserialize(fs); // This displays "True".
Console.WriteLine("Do both array elements refer to the same object? "
+ (a2[0] == a2[1])); // This displays "True".
Console.WriteLine("Do all array elements refer to the same object? "
+ (a1[0] == a2[0]));
}
catch (SerializationException e)
{
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}
}
}