سؤال

ولدي بعض الفئات التي أحاول الانتقال إلى استخدام الأدوية

وCLASS1: المنحنى

وهذه الفئة لديها البرمجية التالية:

public class Curve : IEnumerable

  IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator(); // Calls non-interface method
    }

  public RTRatePointEnumerator GetEnumerator()
    {
        return new RTRatePointEnumerator(_hash);
    }

والفئة 2:

  public class CurvePointEnumerator : IEnumerator

ما هو تحويل الموصى بها من هاتين الطبقتين لاستخدام الأدوية

هل كانت مفيدة؟

المحلول

وأنت لم يحدد نوع يتم إرجاعها من العداد. ولكن انا ذاهب الى تخمين استنادا إلى أسماء انها RTRatePoint وCurvePoint. وأود أن تغيير رمز لتكون على النحو التالي

class Curve: IEnumerable<RTRatePoint> {
  IEnumerator<RTRatePoint> IEnumerable<RTRatePoint>.GetEnumerator() { 
    return GetEnumerator();
  }
  public RTRatePointEnumerator GetEnumerator() {
    return new RTRatePointEnumerator(_hash);
  }
}

class CurvePointEnumerator : IEnumerator<CurvePoint>

والبند الوحيد الذي قد رحلة لكم هو أن IEnumerator تنفذ بالإضافة إلى ذلك IDisposable CurvePointEnumerator وRTRatePointEnumerator سوف تحتاج إلى إضافة طريقة التخلص منها. من المرجح رغم أن هذا الأسلوب يمكن أن يكون كبيرا جدا فارغة. السبب هو إذا لم تكن التخلص أي شيء من قبل، وليس هناك حاجة إلى الآن.

void IDispose.Dispose() {
  // Nothing to see here
}

نصائح أخرى

وIEnumerable<T> and IEnumerator<T>

وجاه، وابتلع قانون بلدي

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