【发布时间】:2014-11-11 22:32:48
【问题描述】:
我在执行我在这里得到的答案时遇到问题!,谁能帮我访问这个私有静态类?
namespace VEParameterTool
{
class ProcessorPlugIn
{
private static class UnsafeNativeMethods
{
[DllImport("kernel32", SetLastError = true, CharSet = CharSet.Ansi)]
static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)]string lpFileName);
[DllImport("kernel32", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
[DllImport("kernel32", SetLastError = true)]
static extern bool FreeLibrary(IntPtr hModule);
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate ErrorCode ProcessorFunction(ref IntPtr pRx);
IntPtr hLib = UnsafeNativeMethods.LoadLibrary("Processor.dll");
}
}
当我尝试 LoadLibrary 时,我收到有关保护级别的错误:
'VEParameterTool.ProcessorPlugIn.UnsafeNativeMethods.LoadLibrary(string)' is inaccessible due to its protection level
我已经搜索了解决方案,但看不到与静态类有关的任何内容。
我们将不胜感激。
安迪
【问题讨论】:
-
将您的类/方法声明为公开可能会有所帮助。
-
Andy您是否熟悉类的访问级别,例如Private, Public, Protected Sealed...etc您是否阅读过 C# 中的封装部分以及访问修饰符级别..? -
不,现在真的...您是否尝试通过 COM 导入 dll 并将其用作静态类?嗯....不。
-
你为什么要对我回答的合法问题投反对票,我正在动态加载一个 dll,现在它工作得很好,这就是下面的完美答案。你不明白这个问题,我还说这是你开始侮辱之前的一个回答。答案是私有静态类中缺少 public 关键字。
-
@Andy 有时似乎社区在反对票上很快,但在赞成票上却没有那么多。然而,downvote 按钮的工具提示确实列出了“缺乏任何研究” - 对您的错误消息进行快速谷歌搜索会(似乎)阐明您的问题。此外,原始问题的链接可能是个好主意。
标签: c# dynamic-loading