Từ C# 5 trở đi bạn có thể nhận được biên dịch để điền vào cho bạn, như thế này:
using System.Runtime.CompilerServices;
public static class Helpers
{
public static string GetCallerName([CallerMemberName] caller = null)
{
return caller;
}
}
Trong MyMethod
:
public static void MyMethod()
{
...
string name = Helpers.GetCallerName(); // Now name=="MyMethod"
...
}
Lưu ý rằng bạn có thể sử dụng này sai bằng cách chuyển giá trị một cách rõ ràng:
string notMyName = Helpers.GetCallerName("foo"); // Now notMyName=="foo"
Trong C# 6, cũng có nameof
:
public static void MyMethod()
{
...
string name = nameof(MyMethod);
...
}
Điều đó không đảm bảo rằng bạn đang sử dụng tên giống như tên phương pháp, mặc dù - nếu bạn sử dụng nameof(SomeOtherMethod)
nó sẽ có một giá trị của "SomeOtherMethod"
của khóa học. Nhưng nếu bạn làm đúng, hãy cấu trúc lại tên của MyMethod
thành một cái gì đó khác, bất kỳ công cụ tái cấu trúc nửa nào cũng sẽ thay đổi việc sử dụng của bạn là nameof
.
Nguồn
2016-06-23 06:04:15
Cảm ơn bạn rất nhiều! –
Cảm ơn bạn đã tham khảo từ C# 6.0 –