PDA

View Full Version : کاربرد Attribute چيست



HosseinJoon
جمعه 16 مرداد 1388, 18:36 عصر
سلام
راستش من کاربرد attribute رو متوجه نمي‌شم. يعني اصلا attribute به چه دردي مي‌خوره؟ مزيت استفاده از اون چيه؟ اگه کسي ميدونه لطفا ساده توضيح بدهد

مرسي

keivan mousavi
جمعه 16 مرداد 1388, 19:04 عصر
:خجالت:شرمنده سوالو درست نخوندم
این سایت هم خیلی کامله
http://cslearning.tripod.com/cslearning.htm

Amir Oveisi
جمعه 16 مرداد 1388, 19:14 عصر
attribute برای نگه داشتن آدرس هر فایل درون هارد به کار میره البته فقط با فرمت NTFS

؟؟؟؟؟؟!!!!!!

توضیحاتی در مورد Attribute
http://www.codeproject.com/KB/cs/attributes.aspx
http://msdn.microsoft.com/en-us/library/aa288454%28VS.71%29.aspx

HosseinJoon
جمعه 16 مرداد 1388, 19:26 عصر
سلام
ببينيد دوستان، لينک نديد خواهشا. چلاق که نيستم! حتما گشتم ولي متوجه نشدم که اينجا پست زدم. من هم تعريف Attribute رو مي دونم اما کاربردشو واقعا نمي دونم. به چه دردي مي خوره. مثلا من واسه چي يک custom attribute تعريف مي کنم؟ به چه کاري مي آيد. که چي بشه؟
ضمنا از اين‌که به هر حال پاسخي داديد، خيلي از شما سپاسگزارم

daneshjoo2
جمعه 16 مرداد 1388, 20:39 عصر
سلام
از attribute ها برای فهماندن صفت یک فیلد، property ، متد یا کلاس به کامپایلر استفاده می شود.
مثلا برای نشان دادن "صفت"ِ توضیحات مربوط به یک property در userControl از attribute زیر استفاده می شود:

[System.ComponentModel.Description("")]
استفاده از این Atrribute به کامپالیر می فهماند که باید متن را به عنوان توضیحات برای این فیلد در نظر بگیره.
ولی استفاده از CostumAttribute ها کمی پیچیده تره و فقط به منظورهای خاصی از اون استفاده می شه.
مثلاً تعدادی property رو در نظر بگیرید که به صورت built in دارای خاصیتی باشند و شما بخواید بعضی از این propery ها را از داشتن این خاصیت معاف کنید، در این صورت استفاده از CostumAttribute ها میتونه ایده خوبی باشه. روش استفاده از اونا رو هم تو لینک های بالا توضیح داده شده.

HosseinJoon
شنبه 17 مرداد 1388, 00:37 صبح
سلام

ممنونم ازتون ولي من باز به درستي جواب سوالمو نگرفتم. من کاربردش رو در همون custom controlها مي‌خوام بدونم. اگه مي‌شه يکي يه مثال بزنه و توضيحي بده.
نبود کسي ديگه اي؟

Ali_Mor
شنبه 17 مرداد 1388, 01:25 صبح
در این مقاله که در همین سایت هم هست تعریف و کاربردش با ذکر مثال توضیح داده شده. اگر باز هم متوجه نشدی بپرس تا توضیح بدم
http://barnamenevis.org/forum/showthread.php?t=147752

HosseinJoon
شنبه 17 مرداد 1388, 13:32 عصر
در این مقاله که در همین سایت هم هست تعریف و کاربردش با ذکر مثال توضیح داده شده. اگر باز هم متوجه نشدی بپرس تا توضیح بدم
http://barnamenevis.org/forum/showthread.php?t=147752


سلام
ممنونم اما ببینید دوستان، انگار شما یک تاپیکی رو از اولش نمی خونید. همین لینکو بالا هم داده بودند. بنده عرض کردم سرچ ها مو کردم، همه جا سر زدم اما متوجه نشدم. عرض کردم لینک نذارید اما باز.....

لطفا اگه کسی می دونه توضیح دهد

HosseinJoon
شنبه 17 مرداد 1388, 20:00 عصر
دوستان خواهش مي کنم يکي جواب بده. خيلي برام مبهمه. اصلا اين متا ديتا (attribute)کجا ديده مي شه؟ کجا ذخيره مي شه؟ به چه دردي مي خوره؟

Ali_Mor
یک شنبه 18 مرداد 1388, 01:33 صبح
انگار شما یک تاپیکی رو از اولش نمی خونید. همین لینکو بالا هم داده بودند.
دوست عزیز، تو کدوم پست این لینک اومده که ما رو متهم به این می کنی که از اول تاپیک نمی خونیم. این مقاله رو خودم نوشتم ، ازتون هم خواستم که اگر باز هم متوجه نشدی بپرس تا توضیح بدم(البته اگر بلد باشم)


اصلا اين متا ديتا (attribute)کجا ديده مي شه؟ کجا ذخيره مي شه؟
منظورتون رو از کجا دیده می شه نمی فهمم، هر جا که کدی وجود دارد می تواند یک اتریبیوت هم قبل از آن قرار گیرد. بهمراه کدها هم ذخیره می شوند.کدها کجا ذخیره میشن؟؟ خوب معلومه در ک فایل(مثلا با پسوند .cs) و با کدها نیز کامپایل میشن(یعنی به که IL تبدیل میشن)
Attribute ها تگ های توصیفی هستند که اطلاعاتی اضافی در رابطه با عناصر برنامه نویسی فراهم می کنند. منظور از عناصر برنامه چیزهائی مانند کلاس، پروپرتی، فیلد و ... است.


به چه دردي مي خوره؟
بسته به نوع Attribute ها کاربرد آنها متفاوت است. بعضی از آنها اطلاعاتی در اختیار کامپایلر جهت نحوه برخورد آن می گذارند. بعضی برای IDE کاربرد دارند مثلا <Browsable> به IDE میفهماند که پروپرتی یا اونت صاحب این صفت در پنجره properties نشان داده شود یا خیر. در LINQ برای تعیین اطلاعات نگاشت بین کلاس های برنامه(Entity) و جداول بانک از Attributeها استفاده می شود.
برنامه نویس هم(منظور خودمان) می تواند اقدام به تعریف Attribute هایی برای مقاصد ویژه اش نماید.

جسارتا بعضی از خطوط بالا همان مطالب مقاله ای است که لینکش رو داده بودم. از شما و دیگر دوستان خواهش دارم اگر واقعا اون مقاله گنگ و نارسا است بگید تا اصلاح کنیم

alireza_tavakol
یک شنبه 18 مرداد 1388, 10:19 صبح
من فکر میکنم اگه آقای Ali_Mor که تسلط کامل در این زمینه دارند یک مثال واقعی عملیاتی از custom attribute و custom control مطرح بکنند و سپس زحمت بکشن یه سری نمونه کد به زبان #C بزارن ، این تاپیک در ادامه مقاله ای که در این زمینه ارائه دادن می تونه بسیار مفید واقعه بشه و مشکله دوستمون حل میشه

بسیار بسیار از ایشان و همه کسانی که در پیشبرد علمی کمک میکنند سپاس گذارم

HosseinJoon
یک شنبه 18 مرداد 1388, 10:38 صبح
دوست عزیز، تو کدوم پست این لینک اومده که ما رو متهم به این می کنی که از اول تاپیک نمی خونیم. این مقاله رو خودم نوشتم ، ازتون هم خواستم که اگر باز هم متوجه نشدی بپرس تا توضیح بدم(البته اگر بلد باشم)


منظورتون رو از کجا دیده می شه نمی فهمم، هر جا که کدی وجود دارد می تواند یک اتریبیوت هم قبل از آن قرار گیرد. بهمراه کدها هم ذخیره می شوند.کدها کجا ذخیره میشن؟؟ خوب معلومه در ک فایل(مثلا با پسوند .cs) و با کدها نیز کامپایل میشن(یعنی به که IL تبدیل میشن)
Attribute ها تگ های توصیفی هستند که اطلاعاتی اضافی در رابطه با عناصر برنامه نویسی فراهم می کنند. منظور از عناصر برنامه چیزهائی مانند کلاس، پروپرتی، فیلد و ... است.


بسته به نوع Attribute ها کاربرد آنها متفاوت است. بعضی از آنها اطلاعاتی در اختیار کامپایلر جهت نحوه برخورد آن می گذارند. بعضی برای IDE کاربرد دارند مثلا <Browsable> به IDE میفهماند که پروپرتی یا اونت صاحب این صفت در پنجره properties نشان داده شود یا خیر. در LINQ برای تعیین اطلاعات نگاشت بین کلاس های برنامه(Entity) و جداول بانک از Attributeها استفاده می شود.
برنامه نویس هم(منظور خودمان) می تواند اقدام به تعریف Attribute هایی برای مقاصد ویژه اش نماید.

جسارتا بعضی از خطوط بالا همان مطالب مقاله ای است که لینکش رو داده بودم. از شما و دیگر دوستان خواهش دارم اگر واقعا اون مقاله گنگ و نارسا است بگید تا اصلاح کنیم


دستتون درد نکنه اما به نظر من کابرد attribute رو خوب نگفتيد.
اين جوري نميشه اجازه بديد خودم دست به کار شم:
الان شما اين کد رو ببينيد:


publicclassPersianTitle : Attribute
{
publicstring Title { get; set; }
public PersianTitle(string title)
{
this.Title = title;
}
}


و سپس اين کد:


[PersianTitle("دوره")]
publicclassCourse
{

public Course()
{
}
}


الان اين کار يعني چي؟ اصلا به چه دردي مي خوره؟ الان با کدهاي بالا چه کاري انجام شده؟

HosseinJoon
یک شنبه 18 مرداد 1388, 21:13 عصر
دوست عزيز جواب بديد ديگه. ماشاالله تعداد سوالات دوستان انقدر زياده که 2 ساعته، تاپيک آدم مي‌ره صفحه دوم و سوم و ....

Ali_Mor
دوشنبه 19 مرداد 1388, 06:54 صبح
به این جمله دقت کنید:

برنامه نویس هم(منظور خودمان) می تواند اقدام به تعریف Attribute هایی برای مقاصد ویژه اش نماید.

مثال شما یکی از این موارد است. برنامه نویس یک کلاس از نوع اتریبیوت به نام PersianTitle تعریف کرده و از اون کاربرد خاص خودش رو می بره. تا جائی که از ظاهر کد معلومه احتمالا می خواسته نام فارسی هر کلاس رو داشته باشد. با این روش می تونه با داشتن حتی یک شی از نوع کلاس cuorse ، بفهمه که نام فارسی کلاس "دوره" است.
اگر فرصت کنم یک کد نمونه میگذارم

Ali_Mor
دوشنبه 19 مرداد 1388, 07:37 صبح
public class FormTitle : Attribute
{
private string _farsiName = "";
public FormTitle(string NameFarsi)
{
FarsiName = NameFarsi;
}

public string FarsiName
{
get { return _farsiName; }
set { _farsiName = value; }
}
}

حالا فرض کنید که می خواهیم برای هر فرم یک نام فارسی داشته باشیم


[FormTitle("فرم اول")]
public partial class Form1 : Form
{
...
}


و با این کد میتونیم نام فارسی هر فرم رو استخراج کنیم


Form1 frm = new Form1();
Type t = frm.GetType();
object[] arr = t.GetCustomAttributes(typeof(FormTitle), false);

FormTitle pt = arr[0] as FormTitle ;
textBox1.Text = pt.FarsiName;

HosseinJoon
دوشنبه 19 مرداد 1388, 08:52 صبح
آقا دست شما درد نکنه. اگه سمپلي، چيزي از ديگر کاربردهاي att داريد، بازم بذاريد لطفا.

مرسي

Black_Hammer
شنبه 02 بهمن 1395, 17:32 عصر
دوستان خداییش من هم هنوز متوجه این Attribute ها نشدم و دقیقا نمی دونم کاربوردش چیه و روی کد های ما چه تاثیری میزاره. میشه لطفا کمی بیشتر توضیح بدید.:گریه::گریه::عصبانی++::گر یه::گریه: