2011-11-21 3 views
3

나는 아래의 코드로 Excel 파일에 액세스하려고 파일에 액세스 할 때 반환 .C# 시스템 .__하여 ComObject Excel에서

그래서이 이상한 행동의 원인이 무엇인지 물어보고 싶습니다. 나는 이미 Workbooks.Open을 추가로 놓으려고 노력했다 .Value args하지만 결과는 동일했다.

답변

2

.NET COM 구현은 프록시 개체를 사용합니다. 이러한 프록시는 내부적으로 생성되어 System .__ ComObject에서 파생되므로 정상적인 동작입니다. 그들은 일종의 "동적 객체"입니다. __ComObject를 필요한 인터페이스 나 클래스로 캐스팅 할 수 있습니다. 문제없이 WorkbookClass로 캐스팅 할 수 있습니다.

모두 인스턴스를 얻는 방법에 따라 달라집니다. 새 개체 (예 : new WorkbookClass)를 만들면 C#에서 직접 강력한 형식의 개체를 만듭니다. 대신 COM 함수 또는 속성에서 반환되는 객체 인 경우 __ComObject가 거의 모든 것이 될 수 있고 여러 인터페이스에 캐스팅 될 수 있기 때문에 C#에서는 반환 할 항목을 알 수 없으므로 반환합니다. 특별한 종류의 "동적"객체. 이러한 객체를 런타임 호출 가능 래퍼 (Runtime Callable Wrapper)의 약자 인 RCW라고합니다.

멋진 읽을 거리 http://www.codeproject.com/KB/cs/cominteropnet.aspx

+0

감사합니다. 그동안 .NET 3.5 프로젝트로 전환했는데 제대로 작동했습니다. 그러나 다시 4.0에서 작동하도록 노력할 것입니다. – Piotroslav