আপনার যদি নির্দিষ্ট বৈশিষ্ট্যগুলি (যেমন অভিধান বা কোনও শ্রেণি) পরিচালনা করতে হয় তবে আপনি আইএক্সএমএলসিরিয়িয়েবল ইন্টারফেস প্রয়োগ করতে পারেন , যা আপনাকে আরও ভার্বোজ কোডিংয়ের ব্যয়ে আরও স্বাধীনতার সুযোগ দেয় ।
public class NetService : IXmlSerializable
{
#region Data
public string Identifier = String.Empty;
public string Name = String.Empty;
public IPAddress Address = IPAddress.None;
public int Port = 7777;
#endregion
#region IXmlSerializable Implementation
public XmlSchema GetSchema() { return (null); }
public void ReadXml(XmlReader reader)
{
// Attributes
Identifier = reader[XML_IDENTIFIER];
if (Int32.TryParse(reader[XML_NETWORK_PORT], out Port) == false)
throw new XmlException("unable to parse the element " + typeof(NetService).Name + " (badly formatted parameter " + XML_NETWORK_PORT);
if (IPAddress.TryParse(reader[XML_NETWORK_ADDR], out Address) == false)
throw new XmlException("unable to parse the element " + typeof(NetService).Name + " (badly formatted parameter " + XML_NETWORK_ADDR);
}
public void WriteXml(XmlWriter writer)
{
// Attributes
writer.WriteAttributeString(XML_IDENTIFIER, Identifier);
writer.WriteAttributeString(XML_NETWORK_ADDR, Address.ToString());
writer.WriteAttributeString(XML_NETWORK_PORT, Port.ToString());
}
private const string XML_IDENTIFIER = "Id";
private const string XML_NETWORK_ADDR = "Address";
private const string XML_NETWORK_PORT = "Port";
#endregion
}
একটি আকর্ষণীয় নিবন্ধ রয়েছে , যা এক্সএমএলসিরালাইজারকে "প্রসারিত" করার জন্য একটি অত্যাধুনিক উপায় প্রয়োগের একটি মার্জিত উপায় দেখায়।
নিবন্ধটি বলে:
আইএক্সএমএলসিরাইজেবল অফিসিয়াল ডকুমেন্টেশনে আচ্ছাদিত, তবে ডকুমেন্টেশনে বলা হয়েছে এটি জনসাধারণের ব্যবহারের উদ্দেশ্যে নয় এবং এর বাইরে কোনও তথ্য সরবরাহ করে না। এটি ইঙ্গিত দেয় যে উন্নয়ন দলটি রাস্তার নিচে এই এক্সটেনসিবিলিটি হুকটি সংশোধন, অক্ষম করতে বা সম্পূর্ণ অপসারণের অধিকার সংরক্ষণ করতে চেয়েছিল। তবে, আপনি যতক্ষণ না এই অনিশ্চয়তা মেনে নিতে এবং ভবিষ্যতে সম্ভাব্য পরিবর্তনের সাথে মোকাবিলা করতে ইচ্ছুক হবেন, আপনি এর সদ্ব্যবহার করতে পারবেন না এমন কোনও কারণ নেই।
কারণ এটি, আমি নিজের নিজস্ব বাস্তবায়নের পরামর্শ দিই IXmlSerializable
অত্যধিক জটিল বাস্তবায়ন এড়াতে শ্রেণি ।
... XmlSerializer
প্রতিবিম্ব ব্যবহার করে আমাদের কাস্টম ক্লাস প্রয়োগ করা সহজবোধ্য হতে পারে ।