Thuộc tính DebuggerStepThrough cho phép bạn bỏ qua đột nhập vào một số phương thức/lớp/thuộc tính nhất định.Có thể DebuggerStepThông qua được kế thừa vào việc triển khai IEnumerable được tạo tự động không?
Trong DebuggerStepThrough being ignored nó được làm rõ rằng trình biên dịch C# không kế thừa thuộc tính này vào trình biên dịch tạo ra thực hiện IEnumerable<T>
.
Một ví dụ nhỏ của một sự thất bại đó là:
static void Main(string[] args)
{
var a = SkipMe().ToList();
}
[System.Diagnostics.DebuggerStepThrough]
static IEnumerable<int> SkipMe()
{
// comment out line below and the throw will be stepped over.
yield return 1;
throw new Exception();
}
Có cách nào để có được trình biên dịch C# để thêm thuộc tính DebuggerStepThrough
để tự động tạo ra gõ?
Có cách nào để phòng thu trực quan bỏ qua gỡ lỗi vào bất kỳ loại nào với thuộc tính [CompilerGenerated]
không?
-
Phụ lục: một số ảnh chụp màn hình minh họa
Kết quả sau khi nhấn F5
Visual Studio Version:
thuộc tính thiếu của chúng tôi:
cho những người tự hỏi tại sao, khi sử dụng Dapper chúng tôi đưa nó vào như một blob nguồn, tôi muốn tránh bước vào bất kỳ mã Dapper nào trong quá trình sử dụng thường xuyên và không muốn thêm dll vào dự án. –
Tôi không thể hiểu được câu hỏi này. Trình biên dịch đã áp dụng thuộc tính [DebuggerHidden] cho các phương thức lớp lặp. Ví dụ trong đoạn mã không có ý nghĩa, trình gỡ rối luôn dừng lại trên một ngoại lệ không bị bắt buộc. Nhận xét trong phương thức SkipMe() không có ý nghĩa, nó không * không * bước qua câu lệnh ném. Ít nhất là không có trong VS2008, không thể biết bạn đang nói về phiên bản nào. –
@hans vs 2010 .net 4, trình lặp chỉ có trình biên dịch được tạo, tôi đã kiểm tra trong phản xạ –