未调用静态构造函数

本文关键字:构造函数 静态 调用 | 更新日期: 2023-09-27 17:57:44

我有以下类:

 private static class NativeSomeWrapper
   {
       [DllImport(NativeMethods.myCeeLib, EntryPoint = "Get_300_bars",
           CallingConvention = CallingConvention.Cdecl)]
       [return: MarshalAs(UnmanagedType.SysInt)]
       internal static extern IntPtr Get300bars([MarshalAs(UnmanagedType.SysInt)] IntPtr assessment);
   }

我有一个静态类,它负责初始化dll:

internal static class NativeMethods
{
    public const string myCeeLib= "myCeeLib.dll";

    static NativeMethods()
    {
        var path = GetPathToMyCeeLibFile();
        var err = SetPath(path);
        if (err != ErrorCode.Ok)
        {
            throw new FileNotFoundException("Coulnt find myCeeLib file.");
        }
    }
}

问题是NativeMethods构造函数没有按预期调用。

如何确保调用NativeMethods静态构造函数并正确设置库文件的路径?

未调用静态构造函数

编译器将在编译时计算该属性的值,因此当您执行程序时静态构造函数不会运行,因为当应用程序启动时,值已经计算完毕,您不需要访问类来获取它(从而触发静态构造函数)。