我正在用C#研究UWP编码。我用一些矩形做了一个小网格:
Rectangle r = new Rectangle();
我已经在很多课程中完成了它。我将创建一个泛型类型(例如作为类或变量)来快速更改Ellipse中的所有矩形(例如),而不是在运行时。我的意思是:
Type ShapeType = typeof(Rectangle);
并创建:
ShapeType figure = new ShapeType(); ...
但明天可以改变
Type ShapeType = typeof(Rectangle);
在
Type ShapeType = typeof(Ellipse);
并更改代码中的所有形状。这可能吗?如何创建“类似矩形”或“椭圆形”的类?
谢谢
标记为重复: “从类型获取新对象实例 在编译时可能并不总是知道对象的类型,但可能需要创建Type的实例。如何从类型中获取新的对象实例?“
我写过哪里我想在运行时创建一个对象?或者也只是我想要创建一个对象? 我的问题是关于“如何从代码中轻松更改许多代码行中定义的类型创建泛型类型?”
答案 0 :(得分:1)
最简单的解决方案是使用工厂方法创建您决定使用的元素的新实例。
看起来像这样:
private Shape CreateShape() => new Rectangle();
因为UWP中的所有Shape
元素都有Shape
作为基类,所以您可以将它用作方法的返回类型,并作为" base"在您使用该形状的所有地方输入。
现在,您可以使用以下内容替换创建Rectangle
实例的所有行:
var shape = CreateShape();
如果您以后决定要将类型更改为Ellipse
,则只需在一个地方更改代码 - 使用CreateShape
方法:
private Shape CreateShape() => new Ellipse();