【问题标题】:static constants class causing error when added static readonly property静态常量类在添加静态只读属性时导致错误
【发布时间】:2026-01-06 23:15:01
【问题描述】:
public static class Constants
{

    public const string Fields_Fax = "FAX";
    public const string Fields_DataProtectionPost = "DATAPROTECTIONPOST";
    public const string Fields_DataProtectionTel = "DATAPROTECTIONMOBILE";        
    public const int AddressBookID = 595204;

    public static readonly XName PersonXName = "Person";

此类在窗口服务解决方案中。该服务已在本地安装并使用上述值运行。

我接手了这个项目,并在这个类中添加了一些我自己的静态只读 XName 类型。 现在,当我使用该类中的任何属性时,我收到一个错误“'This.App' 的类型初始化程序引发了异常”。

只有 1 个项目,我重新编译了解决方案并重新安装了窗口服务。知道问题出在哪里吗?

例外是:

"The type initializer for 'Constants' threw an exception"

...内部异常是:

"The ' ' character, hexadecimal value 0x20, cannot be included in a name."

...我注释掉了我的更改,它可以正确读取,没有错误。所以我只添加了 1 行,看起来类似于“Person”常量但导致它失败:

public static readonly XName cor_Tel_GeneralXName = "Tel General";

【问题讨论】:

  • 不应该是PersonXName = new XName("Person");吗?
  • @reniuz 异常是“'Constants'的类型初始化器抛出异常”......内部异常是-{“'''字符,十六进制值0x20,不能包含在名称中."} ...我注释掉了我的更改,它读取正确,没有错误。所以我只添加了 1 行,看起来类似于“Person”常量但导致它失败... public static readonly XName cor_Tel_GeneralXName = "Tel General";
  • @insanepaul 我很确定您需要将 new 构造与所有非本地对象一起使用 - 请参阅我上面的评论
  • @scibuff 那行已经在那里了。我添加了一条导致错误的类似行
  • 这些值是否与 IL 中安装的这些值有关,我需要以某种方式重新安装它们?

标签: c# static windows-services constants readonly


【解决方案1】:

XName 用作 XML 节点,因此受到命名 XML 节点的通常限制。 XML 节点的名称中不能有空格。

【讨论】:

  • 我按照您和@Reniuz 的建议进行了更改,并且成功了!恼人的是,它在其他 XName 常量上被炸毁了,所以我没有接受它。
  • 嗯,一切都很好,结局很好:)