我有以下课程:
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
静态构造函数并正确设置库文件的路径?
答案 0 :(得分:3)
编译器将在编译时计算该属性的值,因此在执行程序时静态构造函数不会运行,因为应用程序启动时该值已经计算过,您不需要访问该类来获取它(从而触发静态构造函数)。