PDA

View Full Version : سوال: چجوری در یک property یک property دیگه بسازیم



neverlieme
جمعه 11 مرداد 1392, 01:16 صبح
سلام
دوستان می خواستم بدونم آیا امکانش هست یه property رو داخل یه property دیگه بسازیم؟
مثلا کنترل های vb یک خصیصه به نام location دارن که داخل این خصیصه چند خصیصه ی دیگه هست به این صورت :
مثلا واسه یه تکست باکس textbox1.location.x
یا مثلا : textbox1.location.y
ضمن این که خصیصه ی location خودش هم قابل استفادست و میشه به صورت textbox.location ازش استفاده کرد (اونو set کرد یا اونو get کرد)
سوال اینجاست که چجوری میشه همچین کاری کرد؟ یعنی یه خصیصه رو مخصوصه یه خصیصه ی دیگه تعریف کرد؟
ممنون میشم اگه جواب بدید

neverlieme
جمعه 11 مرداد 1392, 16:06 عصر
کسی نبود جواب بده؟

neverlieme
جمعه 11 مرداد 1392, 21:32 عصر
اگه منظورمو نفهمیدید بگید یه جور دیگه سوالمو مطرح کنم. در غیر این صورت یعنی هیچ کس بلد نیست؟

ali.rk
جمعه 11 مرداد 1392, 22:52 عصر
واسه چی می خوای .... من نفهمیدیم توضیح بده ؟

xxnagin
جمعه 11 مرداد 1392, 23:12 عصر
سلام
این یه نمونه

Public Class Class1
Dim c As p
Public Structure p
Public Property x1 As Integer
Public Property x2 As Integer
Public Property x3 As Integer
Public Property x4 As Integer
Public Property x5 As Integer
End Structure
Public Property x As p
Get
Return c
End Get
Set(value As p)
c = value
End Set
End Property
End Class

neverlieme
شنبه 12 مرداد 1392, 03:10 صبح
تو فروم msdn مایکروسافت پرسیدم جوابمو گرفتم به این صورت میشه تعریف کرد

Public Class Car
Public Tire Property Tire() as New TireClass
End Class

Public Class TireClass
Public Property Color As String
Public Property Material As String
and etc.....
End Class

neverlieme
سه شنبه 15 مرداد 1392, 15:55 عصر
البته کد بالا فقط واسه ی زمانیه که متد ها و فیلد ها share شده باشن و در اون حالت خطا میده این کد بدون خطا عمل می کنه :
Public Class Car
Public Variable1 As Integer
Sub New()
End Sub
Private Property _Tire As TireClass = Nothing
Public Property Tire As TireClass
Get
If Not _Tire Is Nothing Then Return _Tire
_Tire = New TireClass(Me)
Return _Tire
End Get
Set(value As TireClass)
_Tire = value
End Set
End Property
End Class

Public Class TireClass
Dim Obj As Car = Nothing
Private _root As Car
Public ReadOnly Property F1 As Integer
Get
Return Obj.Variable1 * 2
End Get
End Property
Sub New(obj As Car)
Me.Obj = obj
End Sub
End Class