Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

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
share|improve this question
2  
You could expose the Settings module wholesale. –  Konrad Rudolph Jan 15 '13 at 10:09
    
@KonradRudolph Can you elaborate? –  Dabblernl Jan 15 '13 at 10:28
1  
Just have a (read-only) property which returns the My.Settings object (no setter required). –  Konrad Rudolph Jan 15 '13 at 10:47
    
If you're going to expose getters and setters, you might as well make the settings public, no? –  Mat's Mug Nov 14 '13 at 1:00
add comment

1 Answer 1

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

enter image description here

(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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.