Tôi có một tình huống mà tôi có một lớpGiao diện cho phương thức trả về kiểu riêng của mình
class Foo
{
Foo Bar()
{
return new Foo();
}
}
Bây giờ tôi wan tot tạo một giao diện cho nó
class IFoo
{
??? Bar();
}
gì nên ở vị trí của dấu chấm hỏi? Mỗi lớp phải trả về kiểu riêng của nó, không phải Foo.
Các giải pháp dưới đây hoạt động nhưng không có vẻ sạch sẽ. Tôi không hiểu tại sao tôi phải chỉ định cùng lớp hai lần, và không có gì giống như "này" cho các loại hình hiện tại
Đây là cách tôi đang sử dụng nó sau này
class GenericClass<T> where T : IFoo
{
T foo = new T();
T item = foo.Bar();
}
Vấn đề với giao diện chung là bạn cần chỉ định T bất cứ nơi nào bạn sử dụng giao diện này trong mã - vì vậy bạn đã ghép nối giao diện của mình với loại cơ bản. Giao diện có xu hướng thử và làm ngược lại? –
@Andrey - Giống như Adam đã nói, đây là một mùi mã nghiêm trọng. Câu trả lời của tôi sẽ làm những gì bạn đang theo sau, nhưng nó không phải là thực hành tốt. – GenericTypeTea
@GenericTypeTea, xin lỗi tôi nên làm rõ rằng nó sẽ làm việc :) –