Tôi đang trong một dự án chia sẻ C# cố gắng tìm PCL (Hồ sơ 259) tương đương với FSharpValue.GetUnionFields
.Làm thế nào để đạt được `FSharpValue.GetUnionFields` trong C# PCL (Hồ sơ 259)
Trong trình duyệt đối tượng thông qua C# dự án, tôi thấy
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);
}
}
này dường như là những gì tôi đang tìm kiếm, nhưng tôi không thể (hoặc không biết làm thế nào) để gọi nó từ C# . Qua F #, nếu tôi mở không gian tên, tôi có thể gọi số máy lẻ FSharpValue.GetUnionFields
. FSharpValue.GetUnionFields
không biên dịch từ C# PCL. Tôi không có kinh nghiệm với F # vì vậy nó có thể là tôi chỉ thiếu một số phần quan trọng của kiến thức liên quan đến F # - C# interop?
Để tham khảo, đây là những gì tôi thấy từ F # pcl.
[<AutoOpen>]
module Microsoft.FSharp.Reflection.FSharpReflectionExtensions
open Microsoft.FSharp.Reflection
val GetUnionFields : value:obj * unionType:System.Type * ?allowAccessToPrivateRepresentation:bool -> UnionCaseInfo * obj []
dự án Repro đây: https://github.com/kennethito/StackOverflowReferences/tree/master/FSharpValue-GetUnionFields
Khi bạn nói "không ai trong số các công việc sau đây", điều đó có nghĩa là gì? Điều gì sẽ xảy ra khi bạn cố gắng làm điều đó? –
Tôi không thể nhận bất kỳ cuộc gọi nào liên quan đến GetUnionCases để biên dịch từ dự án C#. Tất cả chúng đều liệt kê các lỗi liên quan đến [Loại] không chứa khai báo cho [Phương pháp]. Về cơ bản tôi chỉ không biết làm thế nào để đúng cách gọi phần mở rộng từ C# –
Vâng, bạn có thể sử dụng 'FSharpValue.GetUnionFields' để gọi nó ... – Ringil