Tôi muốn biết liệu một lớp học có thể kế thừa từ một lớp và một giao diện hay không. Mã ví dụ bên dưới không hiệu quả nhưng tôi nghĩ nó chuyển tải những gì tôi muốn làm. Lý do tôi muốn làm điều này là bởi vì tại công ty của tôi, chúng tôi tạo thiết bị USB, nối tiếp, Ethernet, v.v. Tôi đang cố gắng phát triển một thành phần/giao diện chung mà tôi có thể sử dụng để viết các chương trình cho tất cả các thiết bị sẽ giúp giữ cho mọi thứ phổ biến (như kết nối, ngắt kết nối, nhận firmware) cho tất cả các ứng dụng của chúng tôi.Trong C#, một lớp có thể kế thừa từ một lớp khác và một giao diện không?
Để thêm vào câu hỏi này: Nếu GenericDevice nằm trong dự án khác, tôi có thể đặt giao diện IOurDevices vào dự án đó sau đó làm cho lớp USBDevice triển khai giao diện nếu tôi thêm tham chiếu vào dự án đầu tiên? Bởi vì chỉ muốn tham khảo một dự án và sau đó thực hiện các giao diện khác nhau tùy thuộc vào thiết bị là gì.
class GenericDevice
{
private string _connectionState;
public connectionState
{
get{return _connectionState; }
set{ _connectionState = value;}
}
}
interface IOurDevices
{
void connectToDevice();
void DisconnectDevice();
void GetFirmwareVersion();
}
class USBDevice : IOurDevices : GenericDevice
{
//here I would define the methods in the interface
//like this...
void connectToDevice()
{
connectionState = "connected";
}
}
//so that in my main program I can do this...
class myProgram
{
main()
{
USBDevice myUSB = new USBDevice();
myUSB.ConnectToDevice;
}
}
Để tham khảo trong tương lai, mục 10.1.4 của đặc tả C# mô tả chính xác cách khai báo một lớp có nhiều loại cơ sở. –
@Eric Lippert: Bạn có thể giúp tôi hiểu về trường hợp này cho dù đó là cách chính xác và sẽ có sẵn trong tương lai không? –