PDA

View Full Version : دسته بندی Property ها



cprogram
سه شنبه 08 فروردین 1391, 16:25 عصر
من چیزی که میخوام اینه که در کلاس تعریف شده، دو دسته Property داشته باشم. مثلا یه کلاس دارم به اسم ObjClass و در درون این کلاس یه عده Property هست با نامهای Length و Width و Height و Weight و Density.
حالا میخوام دو تا گروه در ویژگی ها داشته باشم. گروه اول: Dimension و گروه دوم: Mass
بعد بتونم به صورت زیر بهشون دسترسی داشته باشم:
ObjClass Device = new ObjClass();
Device.Mass.Weight = 1;
Device.Dimension.Height = 0.5;

در حالتی که کلاس ObjClass به صورت استاتیک تعریف بشه، میشه با دو تا تعریف کلاس به نام های Dimension و Mass و قرار دادن ویژگی های مورد نظر در گروه دلخواه به نتیجه مشابه رسید ولی نمیشه دو تا شی از روی اون کلاس ساخت.

چه راهی پیشنهاد میکنین؟

رافعی مهدی
سه شنبه 08 فروردین 1391, 16:31 عصر
سلام
از struct استفاده کن.



class ObjClass
{
public struct Mass
{
public double Weight
{
get;
set;
}

public double Density
{
get;
set;
}
}

public struct Dimension
{
public double Length
{
get;
set;
}

public double Height
{
get;
set;
}

public double Width
{
get;
set;
}
}
}

cprogram
سه شنبه 08 فروردین 1391, 18:12 عصر
با struct هم هیچ فرقی نکرد. من میخوام وقتی از روی کلاس ObjClass یه نمونه میسازم، بتونم به صورت زیر به ویژگی ها دسترسی داشته باشم که با Struct هم ندارم.
ObjClass Device = new ObjClass();
Device.Mass.Weight = 1;

بعد از استفاده از struct باز هم تنها به صورت زیر به ویژگی ها دسترسی دارم:
ObjClass.Mass DeviceMass = new ObjClass.Mass();
DeviceMass.Weight = 1;

cprogram
چهارشنبه 09 فروردین 1391, 13:06 عصر
من خودم مشکل رو حل کردم. به این صورت:
class MassObj
{
Int32 weight;
public Int32 Weigh
{
get { return weight; }
set { weight = value; }
}
Int32 density;
public Int32 Density
{
get { return density; }
set { density = value; }
}
}
class DimensionObj
{
Int32 length;
public Int32 Length
{
get { return length; }
set { length = value; }
}
Int32 height;
public Int32 Height
{
get { return height; }
set { height = value; }
}
}
class ObjClass
{
MassObj mass = new MassObj();
public MassObj Mass
{
get { return mass; }
set { mass = value; }
}
DimensionObj dimension=new DimensionObj();
public DimensionObj Dimension
{
get { return dimension; }
set { dimension = value; }
}
}