所以我得到一个作业[大学生]来创建一个运行车库的程序。我有一个类适用于每种车型[FuelMotorcycle,ElectricMotorcycle,FuelCar,ElectricCar等],每种车型都有自己的构造,它们彼此不同。 其中一个赋值要求是“将创建汽车对象的代码[new]和此代码单独放在程序逻辑部分的类中,此代码部分不能直接或间接转向用户”(已翻译) 。 所以我看到它的方式,我有一个类,让我们说“EmptyCarCreator”,它将有如下方法:
public static FuelMotorcycle CreateNewFuelMotorcycle()
{
FuelMotorcycle EmptyFuelMotorcycle;
return EmptyFuelMotorcycle;
}
显然这不会编译,即使它确实如此,我还是在返回后才能使用“FuelMotorcycle”类构造函数。 我需要用户输入构造函数的元素。 那么,有没有其他方法可以做到这一点?我觉得我在这里遗漏了一些非常基本的东西。 请原谅任何英文错误,希望我的问题很明确。
答案 0 :(得分:-1)
你需要这样的东西:
public static class EmptyCarCreator
{
public static T Create<T>() where T : class, new()
{
return new T();
}
}
然后你会像这样使用它:
FuelMotorcycle myVehicle = EmptyCarCreator.Create<FuelMotorcycle>();
这将通过无参数构造函数创建一个新类。
还有其他选项可以像这样更好地处理参数:
public static class EmptyCarCreator
{
public static object Create(Type type)
{
return Activator.CreateInstance(type);
}
}
要使用此功能,您必须转换此返回的对象。
FuelMotorcycle myVehicle = (FuelMotorcycle)EmptyCarCreator.Create(typeof(FuelMotorcycle));