1

我在我的代码中引用了一个我无法真正控制的自动生成的 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,并确保这些是我的解决方案中实际引用的那些。

有没有人有其他想法?当我们在其他机器上运行完全相同的代码(我可以看到完全相同的硬件、软件、.NET 和 windows)时,我们没有遇到任何问题。那意味着什么?

4

2 回答 2

1

Instance被声明为static。因此,当您使用实例时它不会显示。

TypedValue在引用它的代码(用作示例属性)时尝试这个:

DoorDrvrSts.Instance.TypedValue

代替:

DoorDrvrSts.TypedValue
于 2014-06-10T08:50:05.820 回答
0

帕特里克,你的回答当然很有帮助,但我的问题是实际上使用了错误的 DLL。我曾经Ms process explorer发现正在使用的是什么 DLL,然后我删除了该文件(一开始不应该使用)并在正确的位置生成了一个新文件,它解决了我的问题。

于 2014-07-04T10:16:24.733 回答