tôi thường kiểm tra đối số nhà xây dựng cho các giá trị null trong các cách sau đây:Kiểm tra tham số constructor for null trước khi gọi cơ sở
public class SomeClass(SomeArgument someArgument)
{
if(someArgument == null) throw new ArgumentNullException("someArgument");
}
Nhưng nói rằng tôi có một lớp kế thừa từ một lớp khác:
public abstract class TheBase
{
public TheBase(int id)
{
}
}
public class TheArgument
{
public int TheId { get; set; }
}
public class TheInheritor : TheBase
{
public TheInheritor(TheArgument theArgument) : base(theArgument.TheId)
{
}
}
Và ai đó hiện đang tạo một phiên bản của TheInheritor
như sau:
var theVar = new TheInheritor(null);
Tôi không thể mực của một cách để kiểm tra null
trước khi base
đang được gọi (và ném một NullReferenceException
). Ngắn cho phép một nhà xây dựng của TheBase
chấp nhận một thể hiện của TheArgument
Tôi không thể thấy làm thế nào tôi có thể kiểm tra sự lành mạnh này. Nhưng điều gì sẽ xảy ra nếu TheArgument
chỉ liên quan đến TheInheritor
và có rất nhiều lớp khác được kế thừa từ TheBase
?
Bất kỳ đề xuất nào về cách giải quyết vấn đề này?
thực hiện một chức năng trên một tham số? Đó có phải là luôn luôn trong C#? Chưa bao giờ thấy điều đó trước đây. Nhưng có vẻ đẹp;) (hoặc là nó?) –
Công cụ tuyệt vời. Tự hỏi tại sao tôi không nghĩ về điều đó. Học mỗi ngày :-) +1 –
Tôi nghĩ tôi thích cách tiếp cận chung hơn nữa. Cảm ơn Jon. –