ほとんどの難読化ツールでできることには制限があり、これもその 1 つです。設定値は、文字列リテラルやバッキング フィールドではなく、属性値として保存されます。
Global.System.Configuration.DefaultSettingValueAttribute("bar")> _
Public Property Foo() As String
Get
Return CType(Me("Foo"), String)
End Get
Set(value As String)
Me("Foo") = value
End Set
End Property
VB/VS はプロパティ ゲッター/セッターを生成しますが、ご覧のとおり、属性を使用して初期値を格納します。
Private _foo As String = "bar"
ほとんどの場合、属性で使用される文字列の内容を非表示にする理由はありません。これらは通常、クラスまたはプロパティに関するコンパイラへの指示であるためです。
<Description("Bar String")>
<DefaultValue("bar")>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
Property BarString As String
ほとんどの属性には実行時データも機密情報も含まれていないため、これらの属性リテラルを非表示にする必要はありません。結果として、My.Settings
はフリンジ ケースであり、実装方法の結果です。これは、IDE に入力するデフォルトの初期値にのみ適用されることに注意してください。実行時にそれらを更新すると、それらは属性に書き戻されず、ファイルに保存されます。
そこには些細な数の設定があるので、それらを自分で管理し、ファイルに保存するための小さなクラスを作成するだけです Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)