我可以在一个函数中创建一个对象并在另一个函数中构建吗?

时间:2016-05-05 19:39:00

标签: c# .net

所以我得到一个作业[大学生]来创建一个运行车库的程序。我有一个类适用于每种车型[FuelMotorcycle,ElectricMotorcycle,FuelCar,ElectricCar等],每种车型都有自己的构造,它们彼此不同。 其中一个赋值要求是“将创建汽车对象的代码[new]和此代码单独放在程序逻辑部分的类中,此代码部分不能直接或间接转向用户”(已翻译) 。 所以我看到它的方式,我有一个类,让我们说“EmptyCarCreator”,它将有如下方法:

public static FuelMotorcycle CreateNewFuelMotorcycle()
        {
            FuelMotorcycle EmptyFuelMotorcycle;
            return EmptyFuelMotorcycle;
        }

显然这不会编译,即使它确实如此,我还是在返回后才能使用“FuelMotorcycle”类构造函数。 我需要用户输入构造函数的元素。 那么,有没有其他方法可以做到这一点?我觉得我在这里遗漏了一些非常基本的东西。 请原谅任何英文错误,希望我的问题很明确。

1 个答案:

答案 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));