gpt4 book ai didi

oop - 无法提取通用接口(interface)

转载 作者:行者123 更新时间:2023-12-04 15:11:30 24 4
gpt4 key购买 nike

我想创建一个可以在不同数字基数之间切换的计算器应用程序。就输入数字而言,我认为以下将是一个灵活的 api:

public interface ICalculator
{
string Enter(INumberElement element);
}

public class BaseTenCalculator : ICalculator
{
public string Enter(INumberElement element)
{
...
}
}

public class BaseTwoCalculator : ICalculator
{
public string Enter(INumberElement element)
{
...
}
}

我的问题是对于 BaseTenCalculator,我想要一个方法
Enter(BaseTenNumberElement element)

对于 BaseTwoCalculator,我想要一个方法
Enter(BaseTwoNumberElement element)

确保只输入该数字基数的有效数字。但是,我能想到强制执行此约束的唯一方法是在两种不同的实现中向下转换“元素”参数,如果 INumberElement 的类型不正确,则抛出异常。我觉得这是“错误的”,我错过了一些东西。还有其他方法吗?甚至可以为两个不同的数基计算器创建一个通用接口(interface)吗?

最佳答案

    public interface ICalculator<in T> where T : INumberElement
{
string Enter(T element);
}

public class BaseTenCalculator : ICalculator<BaseTenNumberElement>
{
public string Enter(BaseTenNumberElement element)
{
throw new NotImplementedException();
}
}

public class BaseTwoCalculator : ICalculator<BaseTwoNumberElement>
{
public string Enter(BaseTwoNumberElement element)
{
throw new NotImplementedException();
}
}

关于oop - 无法提取通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468157/

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