Пользовательские настройки с пользовательским классом - проблема сериализации - PullRequest
1 голос
/ 11 февраля 2020

У меня есть класс пользовательских настроек, как показано ниже.

[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0")]
public sealed partial class CustomSettings : global::System.Configuration.ApplicationSettingsBase
{
    private static CustomSettings defaultInstance2 = ((CustomSettings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new CustomSettings())));

    public static CustomSettings Default2
    {
        get
        {
            return defaultInstance2;
        }
    }

    [global::System.Configuration.ApplicationScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public List<TextReplacementRule> TextReplacementRules
    {
        get { return (List<TextReplacementRule>)this["TextReplacementRules"]; }
        set { this["TextReplacementRules"] = value; }
    }

    [Serializable]
    public class TextReplacementRule
    {
        public string Name { get; set; }
        public string Channel { get; set; }
        public string ReplaceTo { get; set; }
        public string ReplaceWith { get; set; }

    }
}

И настройки конфигурации такие же, как и ниже.

<AccessingConfigToUI.Properties.CustomSettings>
      <setting name="TextReplacementRules"  serializeAs="Xml" >
        <value>
          <ArrayOfTextReplacementRule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <TextReplacementRule>
              <Name>Rule1</Name>
              <Channel>EMAIL</Channel>
              <ReplaceTo>VAL1</ReplaceTo>
              <ReplaceWith>VAL2</ReplaceWith>
            </TextReplacementRule>
            <TextReplacementRule>
              <Name>Rule2</Name>
              <Channel>EMAIL</Channel>
              <ReplaceTo>VAL1</ReplaceTo>
              <ReplaceWith>VAL2</ReplaceWith>
            </TextReplacementRule>
          </ArrayOfTextReplacementRule>
        </value>
      </setting>
      </AccessingConfigToUI.Properties.CustomSettings>

И я пытаюсь получить доступ к конфигурации в javascript, используя ниже code.

   <script type="text/javascript">
       var configSetting = "@(AccessingConfigToUI.Properties.CustomSettings.Default2.TextReplacementRules)";
   </script>

При отладке я вижу 2 записи в этом ["TextReplacementRules"], но JS variable- "configSetting" имеет значение ниже после отображения страницы.

System.Collections.Generic.List`1[AccessingConfigToUI.Properties.CustomSettings+TextReplacementRule]"

Похоже, проблема сериализации. Мне нужно увидеть значения, установленные в конфигурационных файлах. (2 записи).

Пожалуйста, помогите.

...