View Full Version : نحوه نوشتن Attribute برای Propertyها
Hamedm
دوشنبه 03 مرداد 1384, 20:17 عصر
سلام
کسی نحوه نوشتن Attribute برای Propertyها رو بلده؟
در پناه حق موفق باشید و پرتوان
titbasoft
سه شنبه 04 مرداد 1384, 12:06 عصر
منظورتون رو واضح تر بگید. یه جورایی attribute که همون property است. منظورتون enumeration که نیست؟
Hamedm
سه شنبه 04 مرداد 1384, 12:29 عصر
سلام
منظورتون رو واضح تر بگید. یه جورایی attribute که همون property است. منظورتون enumeration که نیست؟
نه عزیز جان. منظورم اون نیست.
ببین این نوع Attributeها در ابتدای تعریف Propertyها نوشته میشه و همیشه داخل<> است. نوشتن این Attributeها از قوانین خاص خودش تبعیت میکنه. میخواستم بدونم کسی از دوستان این قوانین رو میدونه. در این زمینه تجربه ای داره؟
در پناه حق موفق باشید و پرتوان
titbasoft
سه شنبه 04 مرداد 1384, 14:58 عصر
گاهی اوقات پیش میاد که یکسری اطلاعات توصیفی برای هر یک از انواع متادیتای (class ها ، property ها ، method ها و ...) شما لازم باشه. مثلا فرض کنید شما می خواهید یک flag برای بعضی از property های خودتون مشخص کنید که اونها رو از بقیه متمایز می کنه . یا مثلا می خواهید اسم نویسنده اون رو بهش اضافه کنید. به طور کلی attribute ها برای مشخص کردن اطلاعاتی بیش از scope یکی از عناصر متادیتا بوجود آمده اند. پس attribute ها صرفا فقط برای property ها استفاده نمی شن و شما می تونید از اونها برای هر نوع از انواع متادیتا استفاده کنید. ولی البته کسی که یک attribute رو نوشته می تونه مشخص کنه که اون attribute برای چه عنصر یا عناصری استفاده بشه.
با این توضیحات می شه گفت تنها قانونی که وجود داره دونستن اینه که چه attribute ای کجا استفاده بشه. که اون هم فقط از طریق MSDN قابل فهمیدن.
در آخر یک مثال فکر کنم همه چیز رو روشن کنه:
فرض کنید یک attribute به این صورت تعریف شده باشه:
<AttributeUsage(AttributeTargets.All)> Public Class DeveloperAttribute
Inherits Attribute
Protected mvarName As String
Public Sub New(ByVal name As String)
Me.mvarName = name
End Sub
Public Property Name() As String
Get
Return mvarName
End Get
Set(ByVal Value As String)
mvarName = Value
End Set
End Property
End Classتوجه کنید که target در این attribute همه (all) مشخص شده.
حالا به این صورت ازش استفاده میشه:
Class DeveloperTest
<Developer("hashem")> Public Sub myMethod()
End Sub
<Developer("ALI")> Public ReadOnly Property myProp() As Boolean
Get
Return True
End Get
End Property
End Classو برای دسترسی به attribute ها هم به این صورت عمل میشه:
Dim dt As New DeveloperTest
Dim dtType As Type = dt.GetType()
Dim mi As System.Reflection.MemberInfo
Dim attr As Attribute
For Each mi In dtType.GetMembers()
For Each attr In Attribute.GetCustomAttributes(mi)
If TypeOf attr Is DeveloperAttribute Then
Dim attrCustom As DeveloperAttribute = CType(attr, DeveloperAttribute)
MsgBox(mi.GetType.ToString & " " & mi.Name() & " has developed by " & attrCustom.Name & " .")
End If
Next
Nextیه چیزی رو که یادم رفت بگم اینه که ما اینجا یک custom attribute تعریف کردیم.
mohssen91
سه شنبه 14 اردیبهشت 1395, 12:17 عصر
سلام دوستان
من هرچی راجع به attribute ها جستجو میکنم هر جا یه جوری توضیح میدن و من اصلا گیج شدم
فرق بین اون چیز هایی که توی [ ] نوشته میشن با اون چیزهایی که توی < > نوشته میشن چیه ؟
آیا هر دو اینها attribute هستن ؟
و اینکه آیا تعریف attribute ها برای property فرق داره با attribute های method
آیا لیستی هست که تمام attribute ها رو در دسترس قرار بده
خیلی خیلی ممنونم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.