يدعى / المعلمات الاختيارية في C # 3.0؟
سؤال
هل هناك طريقة لإضافة المعلمات الاختيارية إلى C # 3.0 مثل ستكون هناك في C # 4.0؟ أنا فلدي هذه الميزة، أنا فقط لا يمكن الانتظار!
تعديل:
إذا كنت تعرف عمل حول / الإختراق لتحقيق هذا الهدف، بعد ذلك أيضا. شكرا!
المحلول
ويمكنك استخدام نوع مجهول والتفكير كحل لالمعلمات المسماة:
public void Foo<T>(T parameters)
{
var dict = typeof(T).GetProperties()
.ToDictionary(p => p.Name,
p => p.GetValue(parameters, null));
if (dict.ContainsKey("Message"))
{
Console.WriteLine(dict["Message"]);
}
}
وحتى الآن يمكن أن أدعو فو مثل هذا:
Foo(new { Message = "Hello World" });
و... وسوف أكتب رسالتي.
وأساسا أنا استخراج كافة الخصائص من نوع مجهول الذي تم تمريره، وتحويلها إلى القاموس من سلسلة وجوه (اسم العقار وقيمته).
نصائح أخرى
وهناك دائما طريقة الحمولة الزائدة. :)
ولسوء الحظ، لا. وسوف تحتاج إلى مترجم C # 4.0 لدعم هذا. إذا كنت تريد المعلمات الاختيارية على منصة. NET اليوم، يمكنك محاولة VB .NET أو F #.
وأود أن داستن، المعلمات الاختيارية تأتي في C # 4.0. أن نوع واحد من الطريق كربي لمحاكاة المعلمات الاختيارية أن يكون لديك كائن [] (أو أكثر كتابة بشدة مجموعة)، والحجة الأخيرة.
واحد ويمكن أيضا استخدام الحجج متغير كمعلمات الخيار. مثال على يعمل هذا الطريق هو string.Format ().
وانظر هنا:
http://blogs.msdn.com/csharpfaq /archive/2004/05/13/131493.aspx