PDA

View Full Version : سوال: اضافه کردن فیلد به یک کلاس از قبل ساخته شده



arman_Delta2002
چهارشنبه 22 دی 1395, 08:18 صبح
سلام آیا راهی هست که به یک کلاس new شده چند فیلد استرینگ به صورت موقت اضافه کرد؟
مثال

class base1()
{
int id {get;set;}
string FName {get;set;}
}

class More()
{
string LName {get;set;}
int Age{get;set;}
}
خوب این دو کلاس رو داریم
تو بدنه برنامه
var qqqq = new base1();
حالا میخوام فیلد های کلاس More رو هم به qqqq اضافه کنم چاره چیست ؟
اگه qqqq یک لیست از کلاس base1 بود چطور ؟
vase qqqq = new List<base1>();

ژیار رحیمی
چهارشنبه 22 دی 1395, 11:33 صبح
سلام چاره ش وراثت هست

public class More:base1
{
string LName {get;set;}
int Age{get;set;}
}

در این حالت با نمونه سازی از کلاس More چه بصورت یک نمونه و چه بصورت لیستی از کلاس More به تمام پراپرتی های دو کلاس با هم دسترسی دارید.
البته کلاسی که نمونه object از آن ساخته شده باشد امکان اضافه کردن پراپرتی وجود ندارد.ولی میتونی مقادیر پراپرتی ها آن را به کلاس توسعه داده شده کپی کرد.

arman_Delta2002
چهارشنبه 22 دی 1395, 15:34 عصر
حالا اگه یه لیست از داده ها از جدول Base1 داشته باشیم و بخوایم تو یک متقییر لیسی از نوع More وارداش کنیم بدون حلقه For و فقط فیلد های مشابه بشینن سر جاهاشون تو لیست More دستور خواصی داریم ؟
یعنی لیستی از داده ها از نوع base1 داریم و یک لیست هم از کلاسی که شما فرمودین More میخوام بدون حلقه اطلاعات Base1 که تو More پروپرتی هاش هست منتقل بشه به لیست جدید(More)

ژیار رحیمی
پنج شنبه 23 دی 1395, 02:00 صبح
البته روش دیگری م بدون وراث هم می تونی انجام بدی اونم کلاس Base1 رو بعنوان یک Property از کلاس More در نظر بگیری. در هر صورت شما برای انتقال به یک حلقه نیاز داری.

////None Inheritance


public class More


{
public More()
{
base1=new base1()
}
public string base1 {get;set;}
public string LName {get;set;}
public int Age{get;set;}
Public void SetBase1(base1 base)
{
base1.Id=base.Id;
base1.FName=base.Name;
}




////Inheritance
public class More:base1


{
public More(){}
public More(base1 base)
{
this.Id=base.Id;
this.FName=base.FName;
}
public string LName {get;set;}
public int Age{get;set;}


}