可以派生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#如何解释的。

问好

救救我,约翰·斯基特…你是我唯一的希望。(抱歉. .我的星战蓝光来了!)

可以派生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)
    {
    }
}
带约束的泛型!