سؤال

ودعونا نقول لديك فئة مع خاصية أوري. هل هناك أي طريقة للحصول على تلك الممتلكات لقبول كلا قيمة سلسلة ويوري؟ كيف نبني عليه؟

وأود أن تكون قادرة على القيام بشيء ما مثل أحد الخيارات التالية، ولكن لا يتم اعتماد (باستخدام VB، لأنه يتيح لك تحديد نوع في إعلان مجموعة لواحد 2ND):

Class MyClass

    Private _link As Uri

   'Option 1: overloaded property
    Public Property Link1 As Uri
        Get
            return _link
        End Get
        Set(ByVal value As Uri)
           _link = value
        End Set
    End Property

    Public Property link1 As String
        Get
            return _link.ToString()
        End Get
        Set(Byval value As String)
           _link = new Uri(value)
        End Set
   End Property

   ' Option 2: Overloaded setter
   Public Property link2 As Uri
      Get
          return _link
      End Get
      Set(Byval value As Uri)
          _link = value
      End Set
      Set(Byval value As String)
          _link = new Uri(value)
      End Set
End Class

وبالنظر إلى أن تلك ربما لن تكون معتمدة في أي وقت قريب، وإلا كيف كنت تعامل مع هذا؟ أنا أبحث عن شيء أجمل قليلا من مجرد توفير وسيلة .SetLink(string value) إضافية، وأنا ما زلت على .Net2.0 (على الرغم إذا كانت الإصدارات الأحدث ميزة لطيفة لهذا، أود أن أسمع عن ذلك).

وأستطيع أن أفكر في سيناريوهات أخرى حيث قد ترغب في تقديم هذا النوع من الحمل الزائد: فئة مع عضو SqlConnection التي تمكنك من تعيين إما اتصال جديد أو سلسلة اتصال جديدة، على سبيل المثال

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

المحلول

وبدلا من ذلك، يمكنك بالطبع التخلي عن الحمولة الزائدة ومجرد اسم الخصائص بشكل مناسب:

Public WriteOnly Property UriString() As String
    Set(ByVal value As String)
        m_Uri = new Uri(value)
    End Set
End Property

وبطبيعة الحال لم يكن لديك لجعل هذا WriteOnly لكن يبدو مناسبا.

نصائح أخرى

وأعتقد أنك تحتاج فقط لتوفير المرافق

Public Sub SetLink(ByVal value as String)
    _link = new Uri(value)
End Sub

لا شيء أجمل متاح، AFAIK.

<اقتباس فقرة>   

ودعونا نقول لديك فئة مع خاصية أوري. هل هناك أي طريقة للحصول على تلك الممتلكات لقبول كلا قيمة سلسلة ويوري؟

ولا لأن هذا يعني وجود اثنين من حاصل التي تختلف فقط في نوع عودتهم وهذا غير مسموح به في .NET.

وأود أن استخدام الأسلوب Uri وحدها، وربما إنشاء أسلوب convenienec لتعيين الخاصية URI، نظرا لسلسلة. ومع ذلك، منذ التحول من String إلى URI واضح ومباشر، وحتى هذا قد يكون غير ضروري.

وأنت لا يمكن أن يكون خاصية واحدة من هذا القبيل، ولكن هل يمكن إنشاء فندقين وكلاهما التلاعب نفس المجال الأساسي - تماما مثل الطول / العرض / الحجم في Windows Forms

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