Hãy nói rằng tôi có các nhà thầu sau đây cho Foo
trong C#:có điều kiện gọi Constructor trong C#
public Foo()
{
// ...
}
protected Foo(bool connect)
: this()
{
// ...
}
tôi đang tìm kiếm một cách để chỉ thực hiện phần this()
bất cứ khi nào các tham số connect
là true
. Đây có phải là cách để làm điều này không?
(Đối với những người tò mò: Lý do đằng sau điều này là lớp Foo
tạo ra các đối tượng kết nối với một số thứ nhất định, khi chúng được tạo ra, chúng luôn phải cố gắng kết nối. Ngay bây giờ, tôi đang tạo trình mô phỏng (hoặc MOCK) cho nó mở rộng các lớp học Foo
.Đó là những gì tôi đang thêm các nhà xây dựng protected
cho, khi một trong những được sử dụng, nên có tùy chọn để không tạo ra một kết nối thực tế.Tôi muốn thực hiện điều này trong khi thay đổi các lớp học Foo
ít nhất có thể.)
Cá nhân tôi ủng hộ cách tiếp cận này. Nó tránh được một nhược điểm của việc gọi một phương thức non-constructor, đó là các trường 'readonly' không thể được khởi tạo trong một non-constructor. Nó cũng quy mô cho nhiều nhà xây dựng (tất cả đều có thể gọi một nhà xây dựng "master" được bảo vệ hoặc thậm chí riêng) - mặc dù gọi phương thức init() cũng có quy mô. –
Vâng, thực sự tôi nghĩ rằng đây là cách tốt nhất quá –
Xem xét những gì @MatthewWatson nói, điều này thực sự có lẽ là câu trả lời đúng. Cảm ơn! –