暴露泛型重载的接口.如何在这里擦干
本文关键字:在这里 接口 泛型 重载 暴露 | 更新日期: 2023-09-27 18:10:31
我有这个接口
interface IMyInterface
{
object Create(Type t);
}
为方便起见,我还将包含一个泛型重载来包装对该方法的调用,因此它变成:
interface IMyInterface
{
object Create(Type t);
T Create<T>();
}
新方法将像这样实现
public object Create<T>()
{
return (T) Create(typeof(T));
}
方法的问题:
- 如果我在接口中包含重载,那么我是强制的实现者有一个愚蠢的包装器方法,总是THE相同。
- 如果我不包括过载,使用
IMyInteface
引用时调用的能力将丢失
如何解决这个设计问题?
最好的解决方案是使用扩展方法:
public static MyInterfaceExtensions
{
public T Create<T>(this IMyInterface target)
{
return (T) target.Create(typeof(T));
}
}
扩展方法可以像普通方法一样调用。