У меня есть интерфейс, написанный на C #, но при реализации его на F # я заметил некоторые странности.
- Класс F # должен быть приведен к интерфейсу, прежде чем C # сможет его использовать
- После приведения WPF не может прочитать его свойства (привязки не выполнены, и SNOOP не может отразить это)
- Я могу обернуть объект в код C #, и все работает нормально.
интерфейс
public interface IInterpret {
public string Name {get;}
public IEnumberable<Project> Interpret(string text);
}
Класс F #
type Interpreter()=
interface IInterpret with
member x.Name = "FParsec Based"
member x.Interpret(str) = Seq.empty
Приведенный ниже код не компилируется
Ошибка в том, что Интерпретатор не реализует IInterpert
public ViewModel(){
IInterpret i = new FSharpLib.Interperter();
}
Это мой текущий обходной путь
public class MyProxy: IInterpret{
private IInterpret _cover;
public MyProxy() {
_cover = new FSharpLib.Interperter() as IInterpret;
}
public string Name { get { return _cover.Name; } }
public IEnumerable<Project> Interpret(string text){
return _cover.Interpret(text);
}
}
Что-то не так с определением класса F # или нужен прокси? Я использую текущий VS2010 f #, а не внеплановое падение.