나는 아래의 코드로 Excel 파일에 액세스하려고 파일에 액세스 할 때 반환 .C# 시스템 .__하여 ComObject Excel에서
그래서이 이상한 행동의 원인이 무엇인지 물어보고 싶습니다. 나는 이미 Workbooks.Open을 추가로 놓으려고 노력했다 .Value args하지만 결과는 동일했다.
나는 아래의 코드로 Excel 파일에 액세스하려고 파일에 액세스 할 때 반환 .C# 시스템 .__하여 ComObject Excel에서
그래서이 이상한 행동의 원인이 무엇인지 물어보고 싶습니다. 나는 이미 Workbooks.Open을 추가로 놓으려고 노력했다 .Value args하지만 결과는 동일했다.
.NET COM 구현은 프록시 개체를 사용합니다. 이러한 프록시는 내부적으로 생성되어 System .__ ComObject에서 파생되므로 정상적인 동작입니다. 그들은 일종의 "동적 객체"입니다. __ComObject를 필요한 인터페이스 나 클래스로 캐스팅 할 수 있습니다. 문제없이 WorkbookClass로 캐스팅 할 수 있습니다.
모두 인스턴스를 얻는 방법에 따라 달라집니다. 새 개체 (예 : new WorkbookClass
)를 만들면 C#에서 직접 강력한 형식의 개체를 만듭니다. 대신 COM 함수 또는 속성에서 반환되는 객체 인 경우 __ComObject가 거의 모든 것이 될 수 있고 여러 인터페이스에 캐스팅 될 수 있기 때문에 C#에서는 반환 할 항목을 알 수 없으므로 반환합니다. 특별한 종류의 "동적"객체. 이러한 객체를 런타임 호출 가능 래퍼 (Runtime Callable Wrapper)의 약자 인 RCW라고합니다.
멋진 읽을 거리 http://www.codeproject.com/KB/cs/cominteropnet.aspx
감사합니다. 그동안 .NET 3.5 프로젝트로 전환했는데 제대로 작동했습니다. 그러나 다시 4.0에서 작동하도록 노력할 것입니다. – Piotroslav