如何解决C#中泛型where子句的方法重载
是否可以使用通用 where 子句重载 C# 中的方法?
下面我有一个可以创建汽车零件对象的工厂。工厂中有一个非常通用的 Create 方法,但也有两个特定的方法。问题是知道这两个特定的具有相同的方法签名,除了 where 子句。
编译器不允许方法声明,但主方法中的代码有效(如果我按“F12->GoToDefinition”,则会找到正确的方法)。
public interface ICarPart { }
public class CommonPart : ICarPart { }
public class Engine : ICarPart { }
public class Gear : ICarPart { }
public interface IFactory
{
T Create<T>();
T Create<T>(int arg) where T : Engine;
T Create<T>(int arg) where T : Gear; // <- Problem
}
public class Program
{
public void Main(IFactory factory)
{
var commonPart = factory.Create<CommonPart>();
var engine = factory.Create<Engine>(4);
var gear = factory.Create<Gear>(4); <- Working
}
}
有没有一种很好的方法来编写这样的工厂 api,它具有良好的编译器支持?感觉近在咫尺,却少了一些细节。
当然我可以给每个方法一个单独的名字,但这并不性感。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。