نمایش نتایج 1 تا 4 از 4

نام تاپیک: ذخيره و بازيابي كردن collection در فايل

  1. #1

    Cool ذخيره و بازيابي كردن collection در فايل

    با سلام!
    كسي از دوستان مي دونه چطوري ميشه هر collection رو تو فايل ذخيره و بازيابي كرد؟

  2. #2
    کاربر دائمی آواتار esmaeily-hosein
    تاریخ عضویت
    مهر 1385
    محل زندگی
    شهر دودها
    پست
    227

    نقل قول: ذخيره و بازيابي كردن collection در فايل

                //Serialize
    List<int> IDs=new List<int>(new int[10] {1,2,3,4,5,6,7,8,9,128});
    XmlSerializer serializer = new XmlSerializer(typeof(List<int>));
    using (FileStream fStream = File.Create("C:\\data.txt"))
    {
    serializer.Serialize(fStream, IDs);
    fStream.Flush();
    }

    //Deserilize
    using (FileStream fStream = File.Open("C:\\data.txt",FileMode.Open))
    {
    List<int> deserilizeObject= serializer.Deserialize(fStream) as List<int>;
    }

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    123

    نقل قول: ذخيره و بازيابي كردن collection در فايل

    هر collection را نمی توان در فایل ذخیره کرد، اجزای collection باید Serializable باشند، از متد SOAP Serialization برای serializa کردن اکثر تایپ ها می توان استفاده کرد و اکثر platform ها مثل Java یا .Net پشتیبانی خوبی از SOAP دارند. از Binary Serialization می توان برای Serialize کردن استفاده کرد که حلقه وسیع تری از اشیا را در بر می گیرد ولی platform های مختلف پشتیبانی مختلفی از آن دارند.
    نهایتا برای ذخیره کردن اشیایی که Serializable نیستند باید متد Serialize کردن را خودتان برای کلاس بنویسید.

  4. #4
    کاربر دائمی آواتار esmaeily-hosein
    تاریخ عضویت
    مهر 1385
    محل زندگی
    شهر دودها
    پست
    227

    نقل قول: ذخيره و بازيابي كردن collection در فايل

    هر چند در 90 درصد موارد collection های .net کار ما رو راه میندازه ولی خوبه نمونه ای از custome collection را هم بهش نگاهی بندازیم .
      [Serializable]
    public class CustomeCollection :CollectionBase,
    IXmlSerializable
    {
    //Indexer
    public Item this[int index]
    {
    get { return List[index] as Item; }
    }

    public int Add(int id,string name)
    {
    return base.List.Add(new Item(id, name));
    }

    #region IXmlSerializable Members

    public System.Xml.Schema.XmlSchema GetSchema()
    {
    return null;
    }

    public void ReadXml(System.Xml.XmlReader reader)
    {
    int Id = -1;
    string name = string.Empty;
    while (reader.Read())
    {
    if (reader.Name == "ID")
    {
    Id = Convert.ToInt32(reader.ReadInnerXml() );
    reader.Read();
    name = reader.Value;
    Add(Id, name);
    }
    }
    reader.Read();
    }

    public void WriteXml(System.Xml.XmlWriter writer)
    {
    writer.WriteStartElement("Items");
    foreach (Item key in base.List)
    {
    writer.WriteElementString("ID", key.ID.ToString());

    writer.WriteElementString("Name", key.Name);
    }
    writer.WriteEndElement();
    }

    #endregion
    }


    public class Item
    {
    public Item(){}

    public Item(int id,string name):this()
    {
    ID = id;
    Name = name;
    }

    [XmlElement]
    public int ID
    {
    get;
    protected set;
    }

    [XmlElement]
    public string Name
    {
    get;
    protected set;
    }
    }


برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •