PDA

View Full Version : مبتدی: معنای کروشه قبل از متد



spranza804
دوشنبه 23 اسفند 1389, 22:19 عصر
سلام دوستان،

از بابت مطرح کردن پرسش زیر عذر خواهی می کنم. من جاوا کار می کنم و بعضی مفاهیم در سی شارپ برایم هنوز مبهم هست.

معنی براکت قبل از متد چیست؟
مثلا :
[somthing]
public static SomeMethod()
{
//
}

unknown.unforgiven
دوشنبه 23 اسفند 1389, 22:39 عصر
سلام
واسه چی عذرخواهی؟ اینجا قراره جواب سوالات همدیگه رو بدیم دیگه. منم خودم نمیدونم واسه چیه اما تو این لینک (http://msdn.microsoft.com/en-us/library/z0w1kczw.aspx) یه چیزایی نوشته. از دوستان اگه کسی توضیحات تکمیلی داره لطفاً بگه

#aliyari_C
سه شنبه 24 اسفند 1389, 00:24 صبح
سلام
یکی از چندین کاربر زیبا Attribute در این است که شما می توانید خود هم Attribute ایجاد کنید
برای مثال شما یک تیم برنامه نویسی دارید , هر برنامه نویس برنامه هایش را به صورت Class به شما تحویل می دهد. اگر بخواهید بدانید که که کدام کلاس مربوط به کدام کاریر است , خوب شما یک بانک اطلاعاتی درست می کنید و نام کلاس +نام هر برنامه نویس + تاریخ درج آن + ..... را در آن اضافه می کنید
ولی چرا لغمه را دور دهان بچرخانیم.

یک کلاس به این صورت داریم:

[AttributeUsage(AttributeTargets.Class)]
public sealed class MyEmployees: System.Attribute
{
private string id;
private string date;

public string ID
{
get { return id; }
set { id = value; }

}

public string Date
{
get { return date; }
set { date = value; }

}

}


سپس هر برنامه نویس کدش را به صورت زیر می نویسد.

[MyEmployees(ID="12345",Date="1389/12/24")]
class Data
{
.....
.....
.....

}

بعد ما می توانیم با استفاده از کلاس System.Reflection برنامه ای مانند بانک اطلاعاتی که در بالا عرض شد بسازیم(یعنی اطلاعات Attribute ها خوانده می شود )

موفق باشی

amir001
سه شنبه 24 اسفند 1389, 00:34 صبح
من نمیدونستم، الان هم نفهمیدم چی شد.
البته مثل اینکه کاردبرد های بیشتری هم داره..

spranza804
سه شنبه 24 اسفند 1389, 13:23 عصر
منم متوجه نشدم. گویا کاربرد های متنوعی داره. مثلا یک نمونش در وب سرویس ( ذکر کردن WebMethod در براکت قبل از نام متد) هست.
اگر امکان داره کمی بیشتر توضیح بدین.
ممنون

spranza804
چهارشنبه 25 اسفند 1389, 08:15 صبح
دوستان کسی نظری ندارد؟؟

JaguarXF
چهارشنبه 25 اسفند 1389, 08:59 صبح
aTTRIBUTE یک چیزی!ست که برای علامت دار کردن بخشهایی از کد مانند متد و کلاس به کار میره.
دیگه بستگی به جا و کاربردش داره.
مثلا میخواهی یک متد رو قدیمی اعلام کنی که توسعه گران ازش استفاده نکنند. خب میشه همینجوری بالای سر متد تایپ کرد که برنامه نویس گرامی! این متد عتیقه شده . لطفا از استفاده نکنید یا اینکه میشه از [System.ObsoleteAttribute] استفاده کرد بالای سر اون متد. آنوقت وقتی کامپیایلش میکند این رو هم باهاش کامپایل میکند و مثلا یک پیغام اخطار نشان میدهد برای استفاده از آن متد.

جای دیگر مثلا در یونیت تستینگ بالای سر یک متد یا کلاس مینویسی که این متد مثلا یک TestMethod است پس وقتی میگویی پروژه یونیت تستم رو اجرا کن میفهمد که کدامها رو باید ران کند

جای دیگر مثلا در کار با COM میگویی که یک کلاس InteropServices.ComVisibleAttribute باشد بنابراین tlbexp.exe میداند که چه بکند با آن.

جای دیگر مثلا کنترل نوشته ای ولی میخواهی یک سری پراپرتی های آن دیده نشوند. برایش دوباره از اینها! هست الان حضور ذهن ندارم یک نصفه شب.

جای دیگر مثلا موقع دیباگ کردن میتوانی ازاینها! برایش تعریف کنی که فلان متد رو داخلش نرو برای دیباگ ، از فلان شی که هوار تا پراپرتی داره فقط این دو تا پراپرتی رو برایم در پنجره دیباگ نشان بده و ..

یک دید کلی بود.

m.soleimani
چهارشنبه 25 اسفند 1389, 10:21 صبح
بخون کامل متوجه می‌شی موفق باشید./


http://www.brainbell.com/tutors/C_Sharp/Attributes.htm

http://www.codeproject.com/KB/cs/attributes.aspx

http://msdn.microsoft.com/en-us/library/aa288454.aspx

spranza804
چهارشنبه 25 اسفند 1389, 17:58 عصر
ممنون از همه ی کسانی که شرکت کردند.