Судя по подсказке Брайана, типы DelegateEvent<'Delegate>
и Event<'Delegate, 'Args>
не поддерживаются в .NET Compact Framework. Это будет означать, что вы не можете объявить событие, которое использует явно указанный тип делегата.
Однако вы все равно можете использовать тип Event<'T>
, который создает событие типа Handler<'T>
(это тип общего делегата, представляющий методы с двумя параметрами типов obj
и 'T
):
type StorageComponent(game) =
inherit GameComponent(game)
let titleStorageAcquiredEvent =
new Event<StorageEventArgs>()
[<CLIEvent>] // If you want to create C# compatible event
member x.TitleStorageAcquired =
titleStorageAcquiredEvent.Publish()
Предполагая, что объявление StorageEventHandler
выглядит следующим образом:
delegate void StorageEventHandler(object sender, StorageEventArgs args);
Приведенный выше пример должен создать более или менее эквивалентный код (с той лишь разницей, что он использует общий тип делегата Handler<_>
вместо вашего собственного StorageEventHandler
).