【发布时间】:2016-07-26 08:33:31
【问题描述】:
我有一个通用方法的接口:
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))
...
?
【问题讨论】:
标签: c#