c# - 可以是 assembly.Location 等于 null 吗?
问题描述
我在这里找到了这段代码。
var assembly = Assembly.GetExecutingAssembly();
if (assembly.Location == null)
{
throw new NullReferenceException("Executing assembly is null!"); // Is it possible???
}
可以assembly.Location
等于null吗?
解决方案
- 文档明确指出 Location可能会返回一个空字符串("")
- 查看源代码,您可能对以下文件感兴趣:
[DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)]
private static extern void GetLocation(QCallAssembly assembly, StringHandleOnStack retString);
b)汇编原生.cpp
void QCALLTYPE AssemblyNative::GetLocation(QCall::AssemblyHandle pAssembly,
QCall::StringHandleOnStack retString)
{
QCALL_CONTRACT;
BEGIN_QCALL;
{
retString.Set(pAssembly->GetFile()->GetPath());
}
END_QCALL;
}
c) 最后一个问题是我们能否找到 GetPath() 实现。我认为它在这里: peimagelayout.inl:
inline const SString &PEImageLayout::GetPath()
{
LIMITED_METHOD_CONTRACT;
return m_pOwner?m_pOwner->GetPath():SString::Empty();
}
它似乎不返回空值,而是返回空字符串。我在 C++ 方面一点也不强,所以如果有人证实我的假设会很好。
推荐阅读
- c# - 如何在 c# 中使用 restshaper 存储每个 JSON 数据?
- ios - 可以从网站访问 iOS HealthKit 数据吗?
- flow-project - Flow-project 将 redis 绑定到 localhost 以确保安全
- python - Python POST 请求返回 404 状态码,但 GET 请求返回 200
- javascript - 如何使这台 JavaScript 钢琴上的第一个按钮正常工作?
- winforms - Powershell 文本框占位符
- javascript - 使用 Python 中的事件获取 cognito 用户详细信息
- python - 无法导入“NLTK”
- amazon-web-services - 从 AWS DataPipeline 调用 Lambda 函数
- python - 如何设置python中本地模块的路径以在CircleCI中识别?