Jestem w projekcie współdzielonym C#, próbując znaleźć odpowiednik PCL (Profil 259) dla FSharpValue.GetUnionFields
.Jak osiągnąć `FSharpValue.GetUnionFields` w C# PCL (Profil 259)
W przeglądarce obiektu poprzez projektu C#, widzę
namespace Microsoft.FSharp.Reflection
{
[AutoOpen]
[CompilationMapping(SourceConstructFlags.Module)]
public static class FSharpReflectionExtensions
{
public static Tuple<UnionCaseInfo, object[]> FSharpValue.GetUnionFields.Static(object value, Type unionType, [OptionalArgument] FSharpOption<bool> allowAccessToPrivateRepresentation);
}
}
To wydaje się być to, czego szukam, ale jestem w stanie (lub nie wiem jak), aby wywołać ją od C# . Przez F #, jeśli otworzę przestrzeń nazw, mogę nazwać rozszerzenie FSharpValue.GetUnionFields
. FSharpValue.GetUnionFields
nie kompiluje się z C# PCL. Nie mam doświadczenia z F #, więc może być tak, że brakuje mi jakiejś ważnej wiedzy związanej z interakcją F # - C#?
Dla odniesienia, to jest to, co widzę z F # pcl.
[<AutoOpen>]
module Microsoft.FSharp.Reflection.FSharpReflectionExtensions
open Microsoft.FSharp.Reflection
val GetUnionFields : value:obj * unionType:System.Type * ?allowAccessToPrivateRepresentation:bool -> UnionCaseInfo * obj []
projekt Repro tutaj: https://github.com/kennethito/StackOverflowReferences/tree/master/FSharpValue-GetUnionFields
Kiedy mówisz „żaden z poniższej pracy”, co to znaczy? Co się stanie, gdy spróbujesz to zrobić? –
Nie mogę uzyskać żadnych połączeń związanych z GetUnionCases do kompilacji z projektu C#. Wszystkie listy błędów związanych z [Typ] nie zawierają deklaracji dla [Metoda]. Zasadniczo po prostu nie wiem jak poprawnie wywołać rozszerzenie z C# –
Można użyć 'FSharpValue.GetUnionFields', aby go nazwać ... – Ringil