سؤال

هل هناك طريقة لإضافة المعلمات الاختيارية إلى 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top