// IBinarySerialize methods // The binary layout is as follow: // Bytes 0 - 19:Culture name, padded to the right // with null characters, UTF-16 encoded // Bytes 20+:Decimal value of money // If the culture name is empty, the currency is null. public void Write(System.IO.BinaryWriter w) { if (this.IsNull) { w.Write(nullMarker); w.Write((decimal)0); return; } if (cultureName.Length > cultureNameMaxSize) { throw new ApplicationException(string.Format( CultureInfo.InvariantCulture, "{0} is an invalid culture name for currency as it is too long.", cultureNameMaxSize)); } String paddedName = cultureName.PadRight(cultureNameMaxSize, '\0'); for (int i = 0; i < cultureNameMaxSize; i++) { w.Write(paddedName[i]); } // Normalize decimal value to two places currencyValue = Decimal.Floor(currencyValue * 100) / 100; w.Write(currencyValue); } public void Read(System.IO.BinaryReader r) { char[] name = r.ReadChars(cultureNameMaxSize); int stringEnd = Array.IndexOf(name, '\0'); if (stringEnd == 0) { cultureName = null; return; } cultureName = new String(name, 0, stringEnd); currencyValue = r.ReadDecimal(); }
Hiển thị các bài đăng có nhãn CRL Integration. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn CRL Integration. Hiển thị tất cả bài đăng
Thứ Tư, 11 tháng 1, 2012
Creating Read and Write Methods with IBinarySerialize
When you choose UserDefined serialization format, you also must implement the IBinarySerialize interface and create your own Read and Write methods. The following procedures from the Currency UDT use the System.IO.BinaryReader and System.IO.BinaryWriter to read from and write to the UDT
Đăng ký:
Nhận xét (Atom)