我在我的代码中引用了一个自动生成的DLL,这是我无法控制的。
这个文件有很多类定义,如下所示:
namespace _Outputs.CEEM
{
public sealed class DoorDrvrSts : SystemVariableBase, ITypedRuntimeValue<int>, IRuntimeValue
{
public const int Clsd_DoorDrvrSts = 2;
public const int Opend_DoorDrvrSts = 1;
public const int Ukwn_DoorDrvrSts = 0;
public static DoorDrvrSts Instance { get; }
public int TypedValue { get; set; }
public static int Value { get; set; }
protected override void DoInvalidateInstance();
public delegate void ValueChanged();
}
}
这是我尝试使用上述类的方法:
_Outputs.CEEM.DoorDrvrSts.Value = _Outputs.CEEM.DoorDrvrSts.Ukwn_DoorDrvrSts;
但后来我得到以下异常:
A .NET exception (MissingMethodException) occured in the module PowerManagement
Error message: Method not found: 'Void _Outputs.CEEM.DoorDrvrSts.set_Value(Int32)'.
Throwing method: PowerManagement.DoTest
当我们收到一个生成DLL的新库时,整个问题就开始了。 我真的不知道在哪里看!我重新生成了DLL,并确保这些是我解决方案中实际引用的那些。
有没有人有任何其他想法? 当我们在其他机器上运行完全相同的代码时(我可以看到完全相同的hw,sw,.NET和windows),我们没有遇到任何问题。这意味着什么?
答案 0 :(得分:1)
Instance
被声明为static
。因此,当您使用实例时,它不会显示。
在引用它的代码时使用它(使用TypedValue
作为样本属性):
DoorDrvrSts.Instance.TypedValue
而不是:
DoorDrvrSts.TypedValue
答案 1 :(得分:0)
Ms process explorer
来找出正在使用的DLL,然后我删除了该文件(首先不应该使用它)并在正确的位置生成一个新文件,它解决了我的问题。< / p>