C# 泛型方法 - 在类型上调用基类构造函数

标签 c# generics visual-studio-2012

我有一个名为 CAR 的对象,声明如下:

public class Car{
   public int NumberOfWheels;
}  

并且使用另一个类我可以检索它的三个子类。
如下:

public TruckA getCarA(int param){
   return new TruckA () {NumberOfWheels = param} 
}
public TruckB getCarB(int param){
   return new TruckB () {NumberOfWheels = param} 
}
public TruckC getCarC(int param){
   return new TruckC () {NumberOfWheels = param} 
}

如何使用泛型编写代码?
(我知道这太简单了,我需要一个更复杂的例子)

我想创建一个方法,创建一个新的(T),输入参数并返回它。

有点像

public TruckC getCarC(int param){
   return getTruck<TruckC>(param)
}

只有那个:
1. TruckA/B/C没有构造函数。
2. Car没有构造函数。使用 {} 初始化。
3. 该方法应仅接收派生自 Car 的类,以便它可以使用其初始化 ({})。

(相当于 ?? extends ? 在 java generics 中)
可能的 ?

谢谢。

最佳答案

private static T GetTruck<T>(int param) where T : Car, new()
{
    return new T() {NumberOfWheels = param} ;
}

关于C# 泛型方法 - 在类型上调用基类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14671988/

相关文章:

c# - 使用NAudio 1.7+播放音频文件

c# - 为什么 Linq.Sum() 的小数点在 int 和 int 之间不明确?

java - 扩展像 ArrayList 这样的 Java 集合类以更轻松地进行泛型管理(警告...等)?

c++ - Visual Studio 2012 可以将 C++ 代码反向工程为 UML 图吗?

c# - 使用 Visual Studio Code 时如何找到并使用最新版本的 CSC.exe?

c# - 使用自定义 WPF 控件时无法设置某些属性

c# - 接口(interface)中的自引用

java - 泛型方法参数强制转换安全性的 getClass()

windows-8 - 如何使用 Windows 8 RT 的开发人员许可证手动签署 exe 文件

visual-studio-2012 - 使用不同的设置启动 Visual Studio