可以派生c#接口定义'覆盖'函数定义
本文关键字:定义 覆盖 函数 派生 接口 | 更新日期: 2023-09-27 18:11:22
我正在定义一个通用的API,它将有许多更具体的派生,我想知道c#接口是否足够强大来建模,如果是,如何,如果不是,我可能如何建模。
为了说明我正在尝试做什么,想象一个具有通用接口的身份验证API,该接口带有一个采用抽象AuthenticationToken的身份验证函数。然后我想创建这个界面的更具体的形式,如下所示…
abstract class AuthenticationToken
{
}
interface IAthentication
{
bool Authenticate(string name, AuthenticationToken token);
}
class DoorKey : AuthenticationToken
{
}
interface IDoorAthentication : IAthentication
{
bool Authenticate(string name, DoorKey token);
}
class DoorUnlocker : IDoorAthentication
{
public bool Authenticate(string name, DoorKey token)
{
}
}
我的意图是,派生接口被约束以符合高级形式,但这不是c#如何解释的。
问好救救我,约翰·斯基特…你是我唯一的希望。(抱歉. .我的星战蓝光来了!)
这就是你想要的:
abstract class AuthenticationToken
{
}
interface IAthentication<T> where T : AuthenticationToken
{
bool Authenticate(string name, T token);
}
class DoorKey : AuthenticationToken
{
}
interface IDoorAthentication : IAthentication<DoorKey>
{
}
class DoorUnlocker : IDoorAthentication
{
public bool Authenticate(string name, DoorKey token)
{
}
}
带约束的泛型!