Type Initializer

本文关键字:Initializer Type | 更新日期: 2023-09-27 18:26:02

我有一个配置类:

namespace SomeCompanyName.SomeAppName
{
    public static class MyConfigClass
    {
        public static readonly string ConsKey = Config.GetAppConfigSetting("ConsKey");
        public static readonly string ConsSecret = Config.GetAppConfigSetting("ConsSecret");
     }
}

我有一种方法试图在字典中使用其中的一些值:

public HttpWebResponse SomeMethod(....)
{
    Dictionary<string, string> headerParams = new Dictionary<string, string> {
        {Constants.Cons, MyConfigClass.ConsumerKey},
        {Constants.Token, MyConfigClass.SingleAccessToken},
        {Constants.ignatureMethod, Constants.SignatureMethodTypeHMACSHA1},
        {Constants.Timestamp, HttpUtility.GenerateTimeStamp()
    };
}

出于某种原因,我得到了这个错误:

"SomeAppConfig的类型初始值设定项引发异常。"

如果SomeAppConfig类是静态的,则无法找出原因。

更新:

以下是GetAppConfigSetting:的定义

public class Config
{
    public static string GetAppConfigSetting(string configKey)
    {
        return ConfigurationManager.AppSettings[configKey] ?? string.Empty;
    }
}

更新:

这是我的测试项目中的app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="ConsKey" value="HHGRT6jV4M" />
    <add key="ConsSecret" value="QR47dbduycAc" />
  </appSettings>
</configuration>

Type Initializer

静态类的类型初始值设定项是设置其静态变量值的代码。在你的情况下,它是这个代码:
public static readonly string ConsKey = Config.GetAppConfigSetting("ConsKey");
public static readonly string ConsSecret = Config.GetAppConfigSetting("ConsSecret");

确保GetAppConfigSetting可以毫无问题地访问ConsKeyConsSecret。从初始值设定项引发的异常应该包含更多信息,以帮助您调试该问题。

这意味着静态构造函数中出现异常。在这种情况下,您的属性初始值设定项。也许您所寻求的配置密钥不存在。

您的代码中有拼写错误

Constants.ignatureMethod, Constants.SignatureMethodTypeHMACSHA1}

应该是

Constants.SignatureMethod, Constants.SignatureMethodTypeHMACSHA1}