Можем ли мы встраивать тип взаимодействия в F #?Вставить типы взаимодействия в F #
Сначала я не вижу возможности сделать это в ссылках.
Во-вторых, если я вставлять тип в C#, он говорит мне, чтобы ссылаться на интерфейс, а не конкретный класс:
//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 # всегда хочет иметь ссылку на конкретный класс. Есть ли способ обойти это?
Это действительно так, но вы по-прежнему поручаете бинарному на самом деле привязываться к определенному классу версии v14.0. COM имеет это понятие интерфейса, которое, по-видимому, сейчас появляется на уровне языка в C#. поэтому вы можете создавать новые ... интерфейс! – nicolas
Идея состоит в том, что я не забочусь о том, какая клиентская библиотека реализует интерфейс. Я подталкиваю эту родословную до среды выполнения, которая отвечает за ее соблюдение. – nicolas