с учетом обратной связи для леппи, которую он компилирует - но IMO некоторые недостатки: я хочу, чтобы каждый подкласс заставлял компилятор определять свое собственное свойство Uri. Код как сейчас:
[<AbstractClass>]
type UriUserControl() =
inherit UserControl()
interface IUriProvider with
member this.Uri with get() = null
Достаточно интересно, что класс I определяет, какие инериты сверху не показывают публичное свойство Uri:
type Page2() as this =
inherit UriUserControl()
let uriStr = "/FSSilverlightApp;component/Page2.xaml"
let mutable uri = new System.Uri(uriStr, System.UriKind.Relative)
do
Application.LoadComponent(this, uri)
member public this.Uri with get () = uri
Я хотел бы определить абстрактный класс, который наследуется от UserControl и моего собственного интерфейса IUriProvider, но не реализует его. Цель состоит в том, чтобы иметь возможность определять страницы (для silverlight), которые реализуют UserControl, но также предоставляют свои собственные Uri (а затем помещают их в список / массив и обрабатывают их как набор:
type IUriProvider =
interface
abstract member uriString: String ;
abstract member Uri : unit -> System.Uri ;
end
[<AbstractClass>]
type UriUserControl() as this =
inherit IUriProvider with
abstract member uriString: String ;
inherit UserControl()
Также Uri в определении - я хотел бы реализовать его как средство получения свойств - и у меня тоже есть проблемы с этим.
это не компилируется
type IUriProvider =
interface
abstract member uriString: String with get;
end