我正在定义一个geenral API,它将有许多更具体的派生,并想知道C#接口是否足够强大,可以对此进行建模,如果是这样,如果不是,我将如何对此进行建模。
为了说明我想要做的事情,想象一个身份验证API,它带有一个带有Authenticate函数的通用接口,它接受一个抽象的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#解释它的方式。
最好的问候
帮助我John Skeets ..你是我唯一的希望。 (对不起..我的星球大战蓝光已经到了!)
答案 0 :(得分:5)
这就是你想要的:
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)
{
}
}
带有约束的泛型!