Tôi đang chạy chương trình sau đây trên hai máy khác nhau:Phương pháp ẩn danh trong lớp tĩnh là không tĩnh? Làm thế nào để gọi nó?
static class Program
{
static void Main(string[] args)
{
Func<int> lambda =() => 5;
Console.WriteLine(lambda.GetMethodInfo().IsStatic);
Console.ReadLine();
}
}
Trên một máy, với .NET 4.5 và Visual Studio 2012 cài đặt này sẽ in "true", vào nhau, với .NET Framework 4.6.2 và Visual Studio 2015 nó in "sai".
Tôi nghĩ rằng các phương thức ẩn danh là tĩnh nếu chúng được định nghĩa trong ngữ cảnh tĩnh. Sự thay đổi này (theo cách được ghi chép) có trong một số cập nhật khung cuối cùng không?
Những gì tôi cần làm là sử dụng Expression.Call
trên lambda.GetMethodInfo()
và trong trường hợp không phải điều này yêu cầu một phiên bản mà lambda được xác định. Nếu tôi muốn sử dụng lambda.GetMethodInfo().Invoke
Tôi sẽ phải đối mặt với cùng một vấn đề.
Tôi làm cách nào để có được một phiên bản như vậy?
Nhưng mục tiêu của bạn là gì? Kết quả mong đợi là gì? –