أفضل طريقة في VB.NET لاستخدام الأعياد من أجل استمرار my.settings؟

StackOverflow https://stackoverflow.com/questions/4312971

سؤال

هل يمكنك تحسين هذا العام؟

أحاول تقليل ارتفاع التعليمات البرمجية وتقليل الأخطاء وتبسيط CodeBehind عن طريق استخدام الأدوية الجيرية. في هذه الحالة ، أقوم بتطبيق الأدوية الجيرية على إعلان الخصائص المستمرة. يتم تنفيذ الثبات من قبل my.settings. ها هي الكود حتى الآن.

' must be defined in same project as My.Settings!
Public Class MySettingsProperty(Of T)
    Implements System.ComponentModel.INotifyPropertyChanged
    Private m_Name As String
    Sub New(ByVal Name As String)
        m_Name = Name
    End Sub
    Sub New(ByVal Name As String, ByVal InitialValue As T)
        m_Name = Name
        Value = InitialValue
    End Sub
    Public Property Value As T
        Get
            Return CType(My.Settings(m_Name), T)
        End Get
        Set(ByVal value As T)
            My.Settings(m_Name) = value
            RaiseEvent PropertyChanged(Me, New     System.ComponentModel.PropertyChangedEventArgs("Value"))
        End Set
    End Property
    Private Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
End Class

الاستخدام:

Public Property Host As New MySettingsProperty(Of  String)("Host")
Host.Value = "127.0.0.1"
Debug.WriteLine(Host.Value)

مزايا:

  1. يستخدم my.settings من أجل الثبات
  2. يقلل الكود وراء الانتفاخ من getters و setters
  3. يقلل من أخطاء الترميز
  4. قابلية
  5. ينفذ inotifiypropertChanged

سلبيات

  1. بحاجة إلى إلحاق ".value" إلى الخصائص.
  2. تحتاج إلى تحديد اسم خاصية my.settings كسلسلة ثابتة.
  3. يجب أن يقيم الفصل في نفس المشروع مثل إعلانات my.settings.
هل كانت مفيدة؟

المحلول

لقد نقلت هذا للتو من c# إلى vb لذلك نأمل أن تكون مناسبة:

Module SettingsHelper

    Public Function GetSetting(Of TSetting)(ByVal selector As Func(Of My.MySettings, TSetting)) As TSetting
        Return selector(My.Settings)
    End Function

    Public Sub SetSetting(ByVal action As Action(Of My.MySettings))
        action(My.Settings)
    End Sub

End Module

والاستخدام:

Debug.WriteLine(SettingsHelper.GetSetting(Function(s) s.Setting1))

SettingsHelper.SetSetting(Sub(s) s.Setting1 = "new value")

أتمنى أن يساعدك هذا.

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