c# - لديك - مشاريع جافا سكريبت




كيف يمكنني إنشاء أساليب النموذج الأولي(مثل جافا سكريبت) في C#.Net؟ (3)

كيف يمكن جعل أساليب النموذج الأولي في C # .Net؟

في جافاسكريبت، يمكنني القيام بما يلي لإنشاء طريقة تقليم للكائن سلسلة:

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}

كيف يمكنني القيام بذلك في C # .Net؟


باستخدام برنامج التحويل البرمجي 3.5 يمكنك استخدام أسلوب التمديد:

public static void Trim(this string s)
{
  // implementation
}

يمكنك استخدام هذا على كلر 2.0 المستهدفة المشروع (3.5 مترجم) من خلال تضمين هذا الاختراق:

namespace System.Runtime.CompilerServices
{
  [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
  public sealed class ExtensionAttribute : Attribute
  {
  }
}

تحتاج إلى إنشاء أسلوب ملحق يتطلب نيت 3.5. يجب أن تكون الطريقة ثابتة، في فئة ثابتة. يجب أن تكون المعلمة الأولى من الأسلوب مسبوقة مع "هذا" في التوقيع.

public static string MyMethod(this string input)
{
    // do things
}

يمكنك ثم نسميها مثل

"asdfas".MyMethod();

يبدو أنك تتحدث عن طرق الإرشاد في C #. يمكنك إضافة وظائف إلى الفئات الموجودة عن طريق إدراج الكلمة الرئيسية "هذه" قبل المعلمة الأولى. يجب أن تكون الطريقة طريقة ثابتة في فئة ثابتة. سلاسل في. نيت لديها بالفعل طريقة "تقليم"، لذلك سأستخدم مثال آخر.

public static class MyStringEtensions
{
    public static bool ContainsMabster(this string s)
    {
        return s.Contains("Mabster");
    }
}

حتى الآن كل سلسلة لديه طريقة كونتسمابستر مفيدة للغاية، والتي يمكنني استخدامها مثل هذا:

if ("Why hello there, Mabster!".ContainsMabster()) { /* ... */ }

لاحظ أنه يمكنك أيضا إضافة طرق الإرشاد إلى الواجهات (على سبيل المثال إليست)، مما يعني أن أي فئة تنفيذ هذه الواجهة سوف تلتقط أيضا تلك الطريقة الجديدة.

يتم التعامل مع أي معلمات إضافية تعلنها في طريقة التمديد (بعد المعلمة "ذيس" الأولى) كمعلمات عادية.





.net