2013-04-22 5 views
4

F #에 interop 유형을 임베드 할 수 있습니까?F에 Interop 유형 임베드 #

먼저 참조에서 그렇게하는 옵션이 보이지 않습니다.

//DBEngine is the interface DBEngineClass is the concrete class 

//if I dont embed the interop 

//Valid 
var dbe = new Microsoft.Office.Interop.Access.Dao.DBEngineClass(); 
//Valid 
var dbe = new Microsoft.Office.Interop.Access.Dao.DBEngine(); 


//if I do embed the interop 
//Invalid 
var dbe = new Microsoft.Office.Interop.Access.Dao.DBEngineClass(); 
//Valid 
var dbe = new Microsoft.Office.Interop.Access.Dao.DBEngine(); 

그러나, F 번호는 항상 구체적인 클래스에 대한 참조를 가지고 싶어 : 나는 C#에서 유형을 포함 할 경우

둘째, 그것은 인터페이스가 아닌 구체적인 클래스를 참조하라고 알려줍니다. 이 문제를 해결할 방법이 있습니까?

답변

1

은 어쩌면 내가 당신의 질문을 이해하지 않지만,이 좋은, 참조 v14.0 작동합니다

open Microsoft.Office.Interop.Access.Dao 
let dbe = DBEngineClass() :> DBEngine 
+0

실제로는 이진수가 실제로 버전 v14.0 특정 클래스에 바인딩하도록 지시합니다. COM은이 인터페이스 개념을 가지고 있습니다.이 인터페이스는 현재 C#의 langage 수준에서 표면화되었습니다. 그래서 당신은 새로운 것을 시작할 수 있습니다 ... 인터페이스! – nicolas

+0

아이디어는 어떤 클라이언트 라이브러리가 인터페이스를 구현하는지 신경 쓰지 않습니다. 나는이 일반성을 런타임에 맡긴다. 누가 런타임을 준수 할 것인가? – nicolas

2

타오 리우 당신이 실체화 올바른 클래스를 발견 F 번호에서해야 할 몇 가지 추가 작업에 대해 이야기를 here. 내 지식으로는 interop 유형을 임베드 할 수있는 방법이 없습니다. 내가 잘못 입증하게되어 기쁘다. :)

관련 문제