public iqueryablegetv_storewhere(expression> predicate)
1.1序列化成檔案
1.1.1 二進位制的序列化和反序列化
//序列化
myobject obj = new myobject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "一些字串";
iformatter formatter = new binaryformatter();
stream stream = new filestream("myfile.bin", filemode.create,
fileaccess.write, fileshare.none);
formatter.serialize(stream, obj);
stream.close();
//反序列化
iformatter formatter = new binaryformatter();
stream stream = new filestream("myfile.bin", filemode.open,
fileaccess.read, fileshare.read);
myobject obj = (myobject) formatter.deserialize(fromstream);
stream.close();
1.1.2 xml序列化和反序列化
上面的**換成soapformatter即可以生成xml
1.2選擇性序列化
[serializable]
public class myobject
set}
注意:當類成員變數**現不能被序列化的類或介面時候我們要通過
[nonserialized] 只針對成員變數
[xmlignore] 針對成員變數和屬性,只針對xml序列化
標記其不被序列化和反序列化
特別注意:要使某屬性在xml序列化過程中不被序列化只能使用[xmlignore],[nonserialized]無效
2>自定義序列化
為了解決1中序列化過程中會出現某些成員變數序列化過程中資料丟失的顯現,
可採用自定義的序列化
[serializable]
public class myobject : iserializable
protected myobject(serializationinfo info, streamingcontext context)
public virtual void getobjectdata(serializationinfo info, streamingcontext context)
}其派生類也必須實現上面的介面方法
[serializable]
public class objecttwo : myobject
protected objecttwo(serializationinfo si, streamingcontext context) : base(si,context)
public override void getobjectdata(serializationinfo si, streamingcontext context)
}切記要在反序列化建構函式中呼叫基類,否則,將永遠不會呼叫基類上的建構函式,並且在反序列化後也無法構建完整的物件。
3>web 服務中的序列化
web 服務返回物件時候會自動把該物件進行xml序列化
因此,乙個類要想在web 服務上傳遞必須可xml序列化
public class test : webservice
//通過xmlinclude宣告序列化過程中相關的類資訊
[webmethod()]
[xmlinclude(typeof(car)), xmlinclude(typeof(bike))]
public vehicle vehicle(string licensenumber)
else if (licensenumber == "1")
else }}
//通過xmlroot指定序列化的root描述資訊
[xmlroot("newvehicle")]
public abstract class vehicle
public class car : vehicle
public class bike : vehicle
4>兩個通用的序列化函式------來自enterprise lib 配置模組
public override object serialize(object value)
finally
return doc.documentelement;
}public override object deserialize(object section)
xmlattribute typeattribute = serializationnode.attributes["type"];
if (typeattribute == null)
string typename = typeattribute.value;
type classtype = null;
trycatch (typeloadexception ex)
catch (filenotfoundexception ex)
if (serializationnode.childnodes.count == 0)
xmlserializer xs = createxmlserializer(classtype);
trycatch (invalidoperationexception e)
throw new configurationexception(message, e);}
序列化和反序列化 C 序列化與反序列化。
序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...
C 序列化和反序列化
binaryserialize serialize new binaryserialize book book serialize.deserialize book.write 3 測試用的 binaryserialize類 using system using system.collections...
C 序列化和反序列化
對stu類進行序列化和反序列化操作序列化所用到的stu類using system using system.collections.generic using system.linq using system.text public string stuname public int stuage ...