Atrybuty i przykłady C# są tutaj zaznaczone, ale nie jest to możliwe dla FSharp.Czy jest możliwe użycie CallerMemberNameAttribute w f #
// using System.Runtime.CompilerServices
// using System.Diagnostics;
public void DoProcessing()
{
TraceMessage("Something happened.");
}
public void TraceMessage(string message,
[CallerMemberName] string memberName = "",
[CallerFilePath] string sourceFilePath = "",
[CallerLineNumber] int sourceLineNumber = 0)
{
Trace.WriteLine("message: " + message);
Trace.WriteLine("member name: " + memberName);
Trace.WriteLine("source file path: " + sourceFilePath);
Trace.WriteLine("source line number: " + sourceLineNumber);
}
Próbka wyjściowa:
message: Something happened.
member name: DoProcessing
source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs
source line number: 31
Czy to możliwe, aby zrobić powyżej w F #, a jeśli tak, to jaki jest zapis?
Cóżeś wypróbowany? Prawie wszystko, co można zrobić w języku C#, można zrobić w języku f #. –
Jeśli masz sugestie na temat tego, co należy wypróbować, podaj je. – bradgonesurfing
Cóżą składnia attributte to '[] arg'. Rzeczy będą komplikowane przez typy opcji - ale możesz spróbować uzyskać przyzwoity komunikat o błędzie. –