PDA

View Full Version : سوال: استفاده از property های یک کلاس در کلاسی دیگر



hastiam
دوشنبه 04 اردیبهشت 1391, 17:19 عصر
سلام
من یک کلاس به نام Address دارم که چند property مثل Area,City,Street و ... داره حالا کلاس دیگه ای به نام Members دارم که می خوام به جز نام و نام خانوادگی آدرس هر فرد رو هم داشته باشم یک سری property مثل Name و Family تعریف کردم حالا اگه بخوام به جای تکرار خصوصیت های Area و City و ... از کلاس Address استفاده کنم باید چکار کنم؟(به عبارت دیگه میخوام از property های کلاسی در کلاس دیگری استفاده کنم)
در کلاس Member یک property از نوع کلاس Address تعریف کردم :

public Address Address { get; set; }
اما وقتی تو فرم ها میخوام از property های کلاس address استفاده کنم اونهارو نمیشناسه.:افسرده:
لطفا کمکم کنید ...

_Memol_
دوشنبه 04 اردیبهشت 1391, 17:36 عصر
سلام
1. اینکه اعضای کلاس Address مثل street و City و Area باید همه Public باشند
2.اینکه میتونید کلاس Member رو فرزند کلاس Address کنید که در این صورت در داخل کلاس Member براحتی میتونید از street و .. استفاده کنید
کلاس Member رو اینطوری فرزند Address کن :

نام کلاس پدر : نام کلاس فرزند
به عنوان مثال :

class Member :Address
{

}

hastiam
سه شنبه 05 اردیبهشت 1391, 08:30 صبح
سلام
1. اینکه اعضای کلاس Address مثل street و City و Area باید همه Public باشند
2.اینکه میتونید کلاس Member رو فرزند کلاس Address کنید که در این صورت در داخل کلاس Member براحتی میتونید از street و .. استفاده کنید
کلاس Member رو اینطوری فرزند Address کن :

نام کلاس پدر : نام کلاس فرزند
به عنوان مثال :

class Member :Address
{

}

اگه بخوام از این روش استفاده کنم که کلاس Member از کلاس Address ارث بری کنه باید Address رو به جای کلاس، interface تعریف کنم که من نمی خوام از interface استفاده کنم.:ناراحت:

gwbasic
سه شنبه 05 اردیبهشت 1391, 08:36 صبح
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string Area { get; set; }
}

public class Member
{
public string Name { get; set;}
public string Family { get; set;}
public Address Address { get; set; }
}

Member member = new Member();
member.Name = "Ali";
member.Family = "Rezai";
member.Address = new Address();
member.Address.City = "Tehran";


مشکل کد بالا اینه که برای مقدار دهی به Address باید اون رو new کرد برای سادگی کار می شه این کارو انجام داد:

public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string Area { get; set; }
}

public class Member
{
public string Name { get; set;}
public string Family { get; set;}
public Address address;
public Address Address
{
get
{
if (address == null)
address = new Address();

return address;
}
set
{
address = value;
}
}
}

Member member = new Member();
member.Name = "Ali";
member.Family = "Rezai";
member.Address.City = "Tehran";

hastiam
سه شنبه 05 اردیبهشت 1391, 14:12 عصر
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string Area { get; set; }
}

public class Member
{
public string Name { get; set;}
public string Family { get; set;}
public Address Address { get; set; }
}

Member member = new Member();
member.Name = "Ali";
member.Family = "Rezai";
member.Address = new Address();
member.Address.City = "Tehran";


مشکل کد بالا اینه که برای مقدار دهی به Address باید اون رو new کرد برای سادگی کار می شه این کارو انجام داد:

public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string Area { get; set; }
}

public class Member
{
public string Name { get; set;}
public string Family { get; set;}
public Address address;
public Address Address
{
get
{
if (address == null)
address = new Address();

return address;
}
set
{
address = value;
}
}
}

Member member = new Member();
member.Name = "Ali";
member.Family = "Rezai";
member.Address.City = "Tehran";


دوست خوبم این کار رو هم انجام دادم اما باز هم خط 32 ، error داره و City رو نمی شناسه. دقیقا کد شمارو کپی کردم اما بازم مشکلم حل نشد.:گریه::گریه::گریه:

gwbasic
سه شنبه 05 اردیبهشت 1391, 14:58 عصر
ببینید من دو حالت برای شما نوشتم حالت اول که Address رو new کردم و حالت دوم بدونه new کردن احتمالا شما درست کپی نکردین و دو حالت رو با هم ترکیب کردین. من این کد رو داخل notepad نوشتم ولی مطمئنم درست کار می کنه. با دقت بررسی کنید
در ضمن همیشه متن خطا رو هم بگید! error می ده یه جمله کلی هست منظور رو نمی رسونه. خطا احتمالا باید object reference not set to an instance باشه که دلیلشم مشخصه
دقت کنید هر دو حالت رو جداگانه بررسی کنید

hastiam
سه شنبه 05 اردیبهشت 1391, 16:25 عصر
ببینید من دو حالت برای شما نوشتم حالت اول که Address رو new کردم و حالت دوم بدونه new کردن احتمالا شما درست کپی نکردین و دو حالت رو با هم ترکیب کردین. من این کد رو داخل notepad نوشتم ولی مطمئنم درست کار می کنه. با دقت بررسی کنید
در ضمن همیشه متن خطا رو هم بگید! error می ده یه جمله کلی هست منظور رو نمی رسونه. خطا احتمالا باید object reference not set to an instance باشه که دلیلشم مشخصه
دقت کنید هر دو حالت رو جداگانه بررسی کنید
ممنونم به خاطر وقتی که گذاشتید مشکل من این بود که دو تا کلاس رو تو دو تا فولدر جداگونه گذاشته بودم.:گیج: