gpt4 book ai didi

c# - 实现通用接口(interface)

转载 作者:行者123 更新时间:2023-11-30 14:41:37 24 4
gpt4 key购买 nike

我有一个通用接口(interface):

public interface IUnauthorizedRequestRespondable<out T> where T:class 
{
T GetResponseForUnauthorizedRequest();
}

(我不确定为什么 Resharper 推荐的 T 是“out”,但这不是问题所在)。
在我的场景中,GetResponseForUnauthorizedRequest 返回的对象始终是实现该接口(interface)的类型。

所以所有接口(interface)的实现看起来像:

public class SignInReturnedObject : IUnauthorizedRequestRespondable<SignInReturnedObject>  

(类名和括号中的类型总是相同的)。
这看起来有点尴尬——难道没有更简洁的方法告诉编译器接口(interface)的方法返回它所属的类型吗?

谢谢。

最佳答案

据我所知,目前在 C# 中无法做到这一点。

理论上的旁注:允许您执行此操作的功能称为 self 类型,但在 C# 中不可用。该功能的想法是你有一个特殊类型,它引用 this 的实际类型,所以如果你有一个名为 self 的特殊类型,你可能会写一些东西喜欢:

public interface IUnauthorizedRequestRespondable { 
self GetResponseForUnauthorizedRequest();
}

...当你有一个实现接口(interface)的类 SignInReturnedObject 时,代替 self 的实际类型将是 SignInReturnedObject,但是不幸的是,那不是
在 C# 中可用:-)

关于c# - 实现通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3906865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com