tôi có phương pháp mở rộng sau:Có thể tái cấu trúc phương pháp mở rộng này không?
public static void ThrowIfArgumentIsNull<T>(this T value, string argument)
where T : class
{
if (value == null)
{
throw new ArgumentNullException(argument);
}
}
và đây là một ví dụ về việc sử dụng của nó ....
// Note: I've poorly named the argument, on purpose, for this question.
public void Save(Category qwerty)
{
qwerty.ThrowIfArgumentIsNull("qwerty");
....
}
hoạt động 100% sử dụng tốt.
Nhưng, tôi không thích cách tôi phải cung cấp tên biến, chỉ để giúp thông báo ngoại lệ của tôi.
Tôi đã tự hỏi nếu nó có thể cấu trúc lại các phương pháp khuyến nông, vì vậy nó có thể được gọi như thế này ...
qwerty.ThrowIfArgumentIsNull();
và nó sẽ tự động hiểu ra rằng tên của biến là 'qwerty' và do đó sử dụng nó làm giá trị cho ArgumentNullException.
Có thể? Tôi giả định phản ánh có thể làm điều này?
cũng xem http://stackoverflow.com/questions/869610/c-resolving-a-parameter-name-at-runtime/869629#869629 –
Kiểm tra http://msmvps.com/blogs/jon_skeet/archive/ 2009/12/09/quot-magic-quot-null-argument-testing.aspx - blogged :) –
Tôi nghĩ rằng đây là một giải pháp rất khó khăn cho một vấn đề rất đơn giản ... Nếu bạn đang sử dụng Visual Studio, bạn có thể sử dụng đoạn mã để thực hiện điều này rất dễ dàng;) –