cuốn sách gpt4 ai đã làm

c# - Triển khai các phương thức trừu tượng/giao diện chứa các tham số loại trừu tượng/giao diện

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 19:48:28 26 4
mua khóa gpt4 Nike

Tôi có hai giao diện:

giao diện công cộng IController
{
void doSomething(IEntity thing);
}

giao diện công cộng IEntity { ... }

Một ví dụ thực hiện là:

lớp công khai ControllerImplA : IController
{
public void doSomething(Thực thể IEntity)
{
EntityImplA thực thểForA = (EntityImplA)thực thể;
...
}
}

lớp công khai EntityImplA : IEntity { ... }

ControllerImplA.doSomething() củathực thể Các thông số sẽ luônThực thểImplA. như nhau,ControllerImplB.doSomething() của thực thể Các thông số sẽ luôn Thực thểImplB, v.v. cho các triển khai khác.

Có cách nào để tránh sử dụng downcasting trong mã hiện tại của tôi không? Nói cách khác, tôi muốn làm một cái gì đó như thế này:

lớp công khai ControllerImplA : IController
{
public void doS Something(EntityImplA thực thể) { ... }
}

Không sửa đổi giao diện? Điều gì sẽ xảy ra nếu chúng ta sử dụng lớp cha trừu tượng thay vì giao diện?

câu trả lời hay nhất

Bạn muốn sử dụng thuốc generic. Sửa đổi giao diện là cách duy nhất để làm cho nó sạch sẽ:

giao diện công cộng IController trong đó T : IEntity
{
void doSomething(T thing);
}

Sau đó:

lớp công khai ControllerImplA : IController
{
public void doS Something(thực thể EntityImplA)
{
...
}
}

Tuy nhiên, nếu bạn thực sự không thể thay đổi giao diện, chẳng hạn như nếu nó được cung cấp bởi thư viện bên thứ ba, thì cách giải quyết của @dasblinkenlight sẽ rõ ràng như bạn sắp nhận được.

Về C# - triển khai các phương thức trừu tượng/giao diện chứa các tham số loại trừu tượng/giao diện, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/42559911/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress