Tôi vừa mới nâng cấp lên VS2015.1 và gặp sự cố trình biên dịch khi cố biên dịch một trong các dự án của mình. Nếu bạn đặt mã repo sau đây trong một ứng dụng giao diện điều khiển (và thêm một tham chiếu đến moq.dll), mã trong dòng 12 sẽ làm hỏng trình biên dịch của tôi. Nó dường như xảy ra trong một cuộc gọi viết lại Roslyn lamdba.Tại sao Roslyn gặp sự cố khi cố gắng viết lại lambda này? (Cập nhật Visual Studio 2015 1)
using System.Collections.Generic;
using System.Linq;
using Moq;
namespace RoslynError
{
class Program
{
static void Main(string[] args)
{
var mockRepo = new MockRepository(MockBehavior.Strict);
var obj = mockRepo.OneOf<DTO>(x => x.Value == (OptionEnum?)null);
}
}
class DTO
{
public DTO(OptionEnum? enumVal)
{
Value = enumVal;
}
public OptionEnum? Value;
}
enum OptionEnum
{
NotSpecified
}
}
Bất kỳ ai biết tại sao sự cố xảy ra?
Tham chiếu đến Moq khó có liên quan. Tôi nghĩ điều quan trọng là mũi tên lambda sẽ được chuyển đổi thành một cây biểu thức (thuộc loại 'Biểu thức>'), không thành một cá thể đại biểu đơn giản (thuộc loại 'Func '). –