首页 > 解决方案 > 当我想将自定义类添加为设置类型时,“类型未定义”

问题描述

我想将此类添加为设置类型:

using System.Collections.Generic;
using System.Configuration;

namespace MY_PROJECT.SUB_PROJECT
{
    [SettingsSerializeAs(SettingsSerializeAs.Xml)]
    public class Configs: List<ConfigData>
    {
        Configs(int capacity): base(capacity) { }

        public string GroupName { get; set; }
    }
}

所以我做了什么:

  1. 在类型下拉框中选择浏览... :
    在此处输入图像描述
  2. 我在任何地方都看不到MY_PROJECT命名空间: 在此处输入图像描述
  3. 所以我手动输入了完整的类型: 在此处输入图像描述
  4. 结果是一个错误:

    Type 'MY_PROJECT.SUB_PROJECT.Configs' is not defined.
    

    在此处输入图像描述

我也试过一个SUB_PROJECT.ConfigsConfigs。没有任何帮助。为什么我的课程没有显示在浏览器中?

标签: c#.netsystem.configurationapplicationsettingsbase

解决方案


我刚刚遇到了这个问题,这是由于不一致的可访问性错误造成的。确保任何“必需”类型/字段都可以全局访问(公共?)。对于 OP 的情况,公开构造函数可以解决问题:

[SettingsSerializeAs(SettingsSerializeAs.Xml)]
public class Configs: List<ConfigData>
{ 
    public Configs(int capacity): base(capacity) { }
  //  ^^
    public string GroupName { get; set; }
}

就我而言,这是问题所在:

internal struct NativeType
{
    //...
}

[SettingsSerializeAs(SettingsSerializeAs.Xml)]
public class NativeTypeWrapper
{
    public NativeType type; // This will not work because NativeType 
                            // is less accessible than NativeTypeWrapper...
}

推荐阅读