Tôi có một hàm tạo khá dài đang thực hiện các tác vụ khởi tạo khác nhau, và như vậy tôi muốn đưa ra một số công việc này vào một số hàm. Điều này dẫn đến tôi tự hỏi liệu tôi có nên làm cho các ví dụ chức năng nói hoặc phương pháp tĩnh. Tôi hiểu nguy cơ gọi một hàm ảo từ một hàm tạo nhưng tôi cũng nghĩ có điều gì đó không đúng về việc gọi một phương thức cá thể trên một đối tượng không được khởi tạo 100%. Chắc chắn đây là một mâu thuẫn về mặt.Phương thức thể hiện cuộc gọi từ một hàm tạo trong C#
Tôi muốn được quan tâm đến ý kiến của mọi người về vấn đề này. Tôi cũng thấy rằng bằng cách sử dụng một phương thức tĩnh để trả về một biến khởi tạo, tôi có thể làm cho mục tiêu thành viên chỉ đọc. Đây là một minh họa đơn giản về kịch bản của tôi.
public class A
{
private readonly string _foo;
public A()
{
_foo = InitialiseFoo();
}
private static InitialiseFoo()
{
// Do stuff
return new string ("foo");
}
}
Tại sao bạn có một hàm tạo dài? Đó không phải là cách các nhà xây dựng nên như thế nào. Bạn nên sử dụng các phương thức để thực hiện các thao tác dài. Nó luôn luôn rất bực bội khi bạn cố gắng tiêu thụ một số API và API này thực hiện truy cập cơ sở dữ liệu và các công cụ trong constructor của nó và có khả năng ném ngoại lệ và các công cụ. Làm đi. Nó thực sự phiền phức. Các nhà xây dựng nên đơn giản. –
Tôi hoàn toàn đồng ý với bạn về điều này, nhưng tôi đang mã hóa một cửa sổ dịch vụ mà cần phải có được tên dịch vụ của nó từ một tập tin cấu hình đầu tiên. Bạn chỉ có thể đặt tên của một dịch vụ bên trong hàm tạo của nó vì vậy tôi sắp xếp bị mắc kẹt với điều này. – user738134