gpt4 book ai didi

c# - 从接口(interface)重载泛型方法

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

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

interface IConverter
{
void Convert<T>(T value);
}

我想为任何类型实现它,但我也知道 string方法逻辑可以简化,所以我想专门为string重载它(如 this question ):

class Converter : IConverter
{
public void Convert<T>(T value)
{
Console.WriteLine("Generic Method " + value);
}

public void Convert(string value)
{
Console.WriteLine("String Method " + value);
}
}

当我有 Converter 的实例时,它工作正常并直接调用方法。代码

var converter = new Converter();
converter.Convert("ABC");
converter.Convert(123);

输出

String Method ABC
Generic Method 123

但是,当我使用界面时(就像在任何带有 DI 的应用程序中一样),我无法为 string 调用我的重载.代码

var converter = (IConverter)new Converter();
converter.Convert("ABC");
converter.Convert(123);

输出:

Generic Method ABC
Generic Method 123

有没有办法完成string的调用?重载方法没有类型检查

if (typeof(T) == typeof(string))
...

?

最佳答案

没有。你投converterIConverter , 因此在您的 converter 上只有一种方法可见变量:Convert<T>(T value) .

您可以通过添加 Convert(string) 来解决这个问题到界面,或者根本不转换到界面并继续使用你的 Converter类(class)。只有这样,其他方法才会可见。

关于c# - 从接口(interface)重载泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584822/

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