C# 不调用静态构造函数

C# 不调用静态构造函数,c#,C#,我有以下课程: private static class NativeSomeWrapper { [DllImport(NativeMethods.myCeeLib, EntryPoint = "Get_300_bars", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.SysInt)] internal stat

我有以下课程:

 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
静态构造函数,并正确设置了库文件的路径?

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

一旦您访问
NativeMethods
成员,就会调用它。您是否在任何地方调用
NativeMethods
?是否以某种方式访问NativeMethods类?检查这个:@Quantic这是一个静态构造函数,正如问题所说。它不仅仅是一个方法。正如标记的duplicate中所指出的,只有当您第一次创建类的实例或访问任何静态成员时,才会调用静态构造函数。
const
成员不是静态成员,因此不会导致调用静态构造函数。当然,从这一点可以很容易地推断,将
const
成员更改为
static
成员将确保调用静态构造函数,但是您会发现在
DllImport
属性中使用该成员时遇到问题。我同意,但问题不在于静态构造函数。实际的问题是,是否有办法检查DllImport文件是否存在,或者甚至如何设置路径。。。我同意这一点,这应该是一个新问题。