2014-06-10 3 views
1

실제로 제어 할 수없는 코드에서 자동으로 생성 된 DLL을 참조하고 있습니다.접근 자 및 MissingMethodException

_Outputs.CEEM.DoorDrvrSts.Value = _Outputs.CEEM.DoorDrvrSts.Ukwn_DoorDrvrSts; 

그러나 나는 다음과 같은 예외가 :

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(); 
    } 
} 

이 내가 위의 클래스를 사용하려고하는 방법입니다 :

이 파일은 아래와 같이 클래스 정의의 톤이있다 :

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을 재생성하고 그 DLL이 실제로 내 솔루션에서 참조되는 DLL인지 확인했습니다.

다른 아이디어가 있습니까? 우리가 다른 기계에서 똑같은 코드를 실행할 때 (똑같은 hw, sw, .NET 및 Windows를 볼 수있는 것처럼) 아무런 문제가 발생하지 않습니다. 그게 무슨 뜻 이죠?

답변

0

패트릭, 당신의 대답은 확실히 도움이되었다하지만 내 문제는 잘못된 DLL이었다 참조 할 때

는 코드 (샘플 속성으로 TypedValue 사용)의 대신이 시도 실제로 사용되었습니다. 어떤 DLL을 사용했는지 알아 내려면 Ms process explorer을 사용하고, 그 파일을 제거하고 (처음 사용하지 말았어야 함) 올바른 위치에 새 것을 생성하여 문제를 해결했습니다.

1

Instancestatic으로 선언됩니다. 따라서 인스턴스를 사용할 때 표시되지 않습니다.

DoorDrvrSts.Instance.TypedValue 

대신 :

DoorDrvrSts.TypedValue 
+0

자동으로 생성 된 코드는 변경할 수없는 DLL입니다. 나는 그것을 사용하는 방법 만 바꿀 수있다. – theAlse

+0

@theAlse : 업데이트 된 답변을 확인하십시오. –

+0

@theAlse : 도움이 더 필요하십니까? 희망이 답변은 충분했다. –