我有一个由两个字符串和一个枚举组成的类.我正在尝试将此类的实例用作字典中的键.不幸的是,我似乎没有正确实现IEquatable.这是我如何做到的:
public enum CoinSide
{
Heads,
Tails
}
public class CoinDetails : IComparable, IEquatable<CoinDetails>
{
private string denomination;
private string design;
private CoinSide side;
//...
public int GetHashCode(CoinDetails obj)
{
return string.Concat(obj.Denomination, obj.Design, obj.Side.ToString()).GetHashCode();
}
public bool Equals(CoinDetails other)
{
return (this.Denomination == other.Denomination && this.Design == other.Design && this.Side == other.Side);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我似乎仍然无法在我的字典中查找项目.此外,以下测试失败:
[TestMethod]
public void CoinDetailsHashCode()
{
CoinDetails a = new CoinDetails("1POUND", "1997", CoinSide.Heads);
CoinDetails b = new CoinDetails("1POUND", "1997", CoinSide.Heads);
Assert.AreEqual(a.GetHashCode(), b.GetHashCode());
}
[TestMethod]
public void …Run Code Online (Sandbox Code Playgroud) 我正在使用C#中的National Instruments Measurement Studio,我在将应用程序部署到特定计算机(运行Windows 7)时遇到了一些问题.我试过在National Instruments论坛上询问,但还没有得到任何解决方案 - 这里有人可以给我一些提示吗?
基本上,我已在多台计算机上多次部署此应用程序,但在这种特殊情况下,我在运行程序时收到错误 -
"System.DllNotFoundException:无法加载DLL nianlys.dll':指定的模块找不到(从HRESULT异常:0x80070007E).
我确保nianlys.dll存在于C:\ Program Files(x86)\ National Instruments\Shared\Analysis中.
我确保存在libiomp5md.dll和LV110000_BLASLAPACK.dll,来自mkl.msm(nianlys.dll依赖于mkl.msm)的文件.nianlys.dll也依赖于nimetautils.msm,但我不确定这包含哪些dll.
我确保通过以管理员身份运行setup.exe来安装程序(而不是运行生成的.msi,请参阅此处).
我通过Windows更新确保了有问题的计算机是最新的.net框架更新.
我曾尝试多次重新安装程序,有时使用新重新编译的安装程序.
我已经尝试手动将64位nianlys.msm添加到安装项目中 - 这会引发错误,因为安装项目的TargetPlatform属性设置为x86.当然,32位版本已经存在于检测到的依赖项中.
有趣的是,从C:\ Program Files(x86)\ National Instruments\Shared\Analysis中获取nianlys.dll的副本并将其插入到安装程序的目录中会引发不同的错误 - 在这种情况下,错误是:
"尝试加载格式不正确的程序.(HRESULT异常:0x8007000B)"
从另一台计算机(默认位置C:\ Program Files\National Instruments\Shared\Analysis)获取64位版本的nianlys.dll副本并将其插入到安装程序的目录中会引发第三种类型的错误 - "System.DllNotFoundException:无法加载DLL'nianlys.dll':动态链接库(DLL)初始化例程失败.(HRESULT异常:0x8007045A)".应该注意的是,在程序运行的计算机上安装程序之前,此.dll存在,但在目标计算机上不存在问题.
使用相同的64位nianlys.dll并将其插入另一台计算机上找到的位置,C:\ Program Files\National Instruments\Shared\Analysis,无法解决原始错误.
更有趣的是,我试图在程序运行的计算机上重现错误 - 删除x64版本的nianlys.dll会抛出原始的HRESULT:0x80070007E错误,而删除x86版本会导致运行时出现Windows安装程序该程序.
在赖以程序的工作,没有任何问题的计算机上,Windows任务管理器似乎并没有表示该节目是32位(与节目名称中的*32后缀),尽管目标平台被设置为86.从这一切看来,尽管目标平台只是x86,但在x64和x86版本中使用nianlys.dll存在一些问题.
我已经没想到我可以尝试解决这个问题的方法了.