Код FSharp структурирован следующим образом (я не контролирую исходный код).Как называть расширения типа F (статические функции-члены) от C#
namespace FS
[<AbstractClass; Sealed>]
type TestType() =
static member IrrelevantFunction() =
0
[<AutoOpen>]
module Extensions =
type TestType with
//How do we call this from C#
static member NeedToCallThis() =
0
module Caller =
let CallIt() =
//F# can call it
TestType.NeedToCallThis()
C# код вызова выглядит следующим образом
public void Caller()
{
TestType.IrrelevantFunction();
//We want to call this
//TestType.NeedToCallThis();
//Metadata:
//namespace FS
//{
// [Microsoft.FSharp.Core.AutoOpenAttribute]
// [Microsoft.FSharp.Core.CompilationMappingAttribute]
// public static class Extensions
// {
// public static int TestType.NeedToCallThis.Static();
// }
//}
//None of these compile
//TestType.NeedToCallThis();
//Extensions.TestType.NeedToCallThis.Static();
//Extensions.TestType.NeedToCallThis();
}
Почему бы просто не использовать отражатель, чтобы выяснить, что полное имя метода? ILSpy должен работать нормально :) – Luaan
@ Luaan Даже зная полное имя недостаточно - C# не может использовать его напрямую. Сам вопрос на самом деле * показывает * полное имя в комментариях. –
@ReedCopsey Это полезная информация, которая будет экономить OP много времени, конечно: P Немного постыдно, что C# не разрешает цитируемые идентификаторы ... для взаимодействия. – Luaan