Tôi muốn làm một giao diện trong C# định nghĩa một phương pháp mà luôn luôn trả về một đối tượng của lớp thực hiện, như sau:Tôi có thể buộc một lớp thực hiện trả về một đối tượng thuộc kiểu riêng của nó không?
public interface IParser {
IParser Parse(string s);
}
public class Parser : IParser {
public Parser Parse(string s) {
return new Parser(s);
}
}
Tôi có thể buộc một lớp thực hiện để trả lại một đối tượng kiểu riêng của mình? Nếu có thể, sau đó cách? Hay là generics câu trả lời ở đây?
NB: Mã này chỉ là một minh hoạ, không phải cái gì đó là phải chạy.
Bạn đã khiến tôi rất tò mò: tại sao bạn lại cố gắng làm điều này? Nói chung, điểm xác định một giao diện là để mã máy khách có thể tin tưởng rằng một API nhất định được định nghĩa trên một đối tượng mà không cần phải biết hoặc quan tâm đến loại cụ thể của đối tượng đó. Đó là một trong những thế mạnh lớn của OOP. Điều gì mà bạn đang cố gắng thực hiện bằng cách làm điều này? –
Vâng, suy nghĩ của tôi là khi có giao diện này, bạn luôn có thể tin tưởng rằng các lớp thực hiện giao diện sẽ có phương thức này và chúng sẽ luôn trả về kiểu của riêng chúng. Nhưng như bạn nói, đây có thể không phải là thiết kế OO tốt nhất và tôi sẽ từ bỏ nó cho một phương thức trả về kiểu giao diện thay thế. – Cros