我正在C#中使用ASP.NET MVC。我正在创建服务类。我有一个驱动程序服务接口(IDriverService)的服务接口。实现接口但返回返回类型的子类?
它具有以下方法定义:
Driver New();
我有这个接口,将实现该方法,这样的两种实现方式:
Driver New()
{
return new Driver();
}
Driver New()
{
return new SubclassOfDriver();
}
正如你可以看到一个实现通过实现新方法返回一个基础Driver,另一个是Driver的一个子类。
问题是通过实现接口我必须返回一个'驱动程序',但有时我想返回'SubclassOfDriver'。我可以说你应该把结果投给你想要的驱动程序,但这是不安全的,编码器需要关于实现的信息来确定哪个驱动程序已经被实例化。这样做的最好方法是什么?
感谢
您可以返回界面而不是类(因此'IDriver New();') – Raidri
投射到基类并非不安全,甚至不是必需的。这是一个隐含的安全转换。 –
客户端不应该关心哪个'Driver'被实例化 - 如果他这样做,这是一种设计气味。 – millimoose