PDA

View Full Version : سوال: مشكل با Serlize و refrenceType ها



Javad_Mail
دوشنبه 23 اردیبهشت 1387, 17:21 عصر
سلام . من دچار يك مشكل بد شدم ،‌خيلي هم جستجو كردم ولي به نتيجه اي نرسيدم
مشكل :
من يك كلاس دارم ، كه instanc هايي از كلاسهاي ديگه توش تعريف كردم .
مثال




namespace SerilaizeTest
{
public class M
{
private A _a = new A();
private B _b = new B();

public A a { get { return _a; } set { _a = value; } }
public B b { get { return _b; } set { _b = value; } }

public string Name
{
get { return "JAVAD"; }
set { }
}

}
public class A
{
private X _x;
public X x { get { return _x; } set { _x = value; } }

}
public class B
{
private X _x;
public X x { get { return _x; } set { _x = value; } }
}
public class X
{
private string _Name = "javad";
public string Name { get { return _Name; } set { _Name = value; } }

}

}



مشكل اينجاست كه فرض كنيد من مي خوام كلاس M رو اينطوري استفاده كنم .


M m = new M();
m.a.x = new A();
m.b.x = m.a.x;


توجه كنيد كه m.a.x به صورت refrencetype تويه m.b.x هم وجود داره .
پس اگه m.a.x رو عوض كنم m.b.x هم عوض ميشه .
تا اينجاش مشكلي ندارم .

امام اگه بيايم كلاس m رو Serialize‌كنيم ، و بعد Deserilize كنيم refrencetype ها از بين ميرن .
يعني بعد از desrilize ، كلاسي كه از جنس M دستمون مياد m.a.x با m.b.x فرق مي كنه يعني به يه refrence اشاره نمي كنن .

اين حالت تو webservice ها هم صادقه . يعني اگه همچين كلاسي رو تو يه متود webservice برگردونيد مشكل من رو خواهين داشت .

من نتونستم راهي تو اينترنت پيدا كنم . جز اينكه خودم بيام براي كلاسهام interface ها رو implement كنم و استفاده كنم كه يه چيز فضايي مي شد .

اگه بتونين كمكم كنيد خيلي ممنون مي شم كه پروژم رو هواست تقريبا :(
ممنون