如何更改所有代码中的类型

时间:2016-11-02 01:27:29

标签: c# types uwp

我正在用C#研究UWP编码。我用一些矩形做了一个小网格:

Rectangle r = new Rectangle();

我已经在很多课程中完成了它。我将创建一个泛型类型(例如作为类或变量)来快速更改Ellipse中的所有矩形(例如),而不是在运行时。我的意思是:

Type ShapeType = typeof(Rectangle);

并创建:

ShapeType figure = new ShapeType(); ...

但明天可以改变

Type ShapeType = typeof(Rectangle);

Type ShapeType = typeof(Ellipse);

并更改代码中的所有形状。这可能吗?如何创建“类似矩形”或“椭圆形”的类?

谢谢

标记为重复: “从类型获取新对象实例 在编译时可能并不总是知道对象的类型,但可能需要创建Type的实例。如何从类型中获取新的对象实例?“

我写过哪里我想在运行时创建一个对象?或者也只是我想要创建一个对象? 我的问题是关于“如何从代码中轻松更改许多代码行中定义的类型创建泛型类型?”

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用工厂方法创建您决定使用的元素的新实例。

看起来像这样:

private Shape CreateShape() => new Rectangle();

因为UWP中的所有Shape元素都有Shape作为基类,所以您可以将它用作方法的返回类型,并作为" base"在您使用该形状的所有地方输入。

现在,您可以使用以下内容替换创建Rectangle实例的所有行:

var shape = CreateShape();

如果您以后决定要将类型更改为Ellipse,则只需在一个地方更改代码 - 使用CreateShape方法:

private Shape CreateShape() => new Ellipse();