HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Is this the correct way to expose a setting for a vb.net class library?

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
thisexposethewaysettingnetcorrectforlibraryclass

Problem

I define in the Settings Tab of a VB.Net class library some user scoped settings. I want to expose these settings to other projects that reference the class library. I chose to do this using a public Module. This works, but it requires exposing each and every setting manually. Is there a better way?

Public Module Settings

    Public Property SomeSetting As Integer
        Get
            Return My.Settings.SomeSetting
        End Get
        Set(value As Integer)
            My.Settings.SomeSetting = value
            My.Settings.Save()
        End Set
    End Property

End Module

Solution

I think it's a fairly verbose way of exposing app settings. How about this?

(taken from an answer on this SO question)

This essentially comes down to what @KonradRudolph's comment was saying - the reason you "need" your Settings module is probably because the settings' access modifier is set to Internal, which means it's not accessible to other assemblies.

If you need to expose app settings to other assemblies, you just change that access modifier to Public and you're done.

Doing this:

Public Module Settings
    Public Property AppSettings As Settings
        Get
            Return My.Settings
        End Get
    End Property
End Module


Is then totally redundant. Even more so, doing what you've done (exposing each setting individually) becomes more painful to maintain than it needs to be; if the settings are public then you expose the settings class itself and whatever you change is immediately available to client assemblies.

Code Snippets

Public Module Settings
    Public Property AppSettings As Settings
        Get
            Return My.Settings
        End Get
    End Property
End Module

Context

StackExchange Code Review Q#20537, answer score: 2

Revisions (0)

No revisions yet.