我最近从Java Web开发人员转变为主要负责WPF应用程序的C#应用程序开发人员.我过去常常使用带有Java的Spring MVC,其中许多代码结构被抢占并为我设置.由于我已经转换到WPF,我的应用程序依赖于我设置可重用,解耦代码的能力.
我一直在努力提高我在某些设计领域的技能,包括仿制学,设计模式和反思.
我很清楚所有这些是什么,对于泛型和设计模式,我相当擅长应用我认为最佳实践(尽管这已经在空中).
我不太熟悉的是反思.我知道反射是什么,我知道如何做它来完成动态程序集加载,方法和类调用等任务.
我不明白的是这可能如何帮助我的例子.
如果您知道如何使用它,我会不断听到反射如何真正有用.当我尝试研究这个主题时,我只找到教程和如何做的参考,而不是它可以用来做的好处.
我的问题是,作为WPF开发人员,我可以将其视为使用反射,这将有助于我,和/或是否有一个地方或参考,可以给我更多,然后只是使用反射的语法,但也是现实世界的例子和/或最佳做法?
反射有点像匿名方法:在看到第一个用例之前,很难看出它在哪里有用;之后,通常更容易弄清楚。
这是我大约一年半前编写的代码的实际示例。在我大学的一个学生项目中,我们用 C# 编写了一个机器人,目的是玩德州扑克。我们还编写了一个基于事件的引擎来处理游戏本身,并包括网络支持,以允许人类和计算机从任意数量的不同机器加入。为了让我们了解发生了什么,我们编写了一个单独的 GUI 应用程序,用于启动、加入和参与游戏。所有玩家都可以通过此应用程序添加,无论是机器人还是人类。
我们实现了我们的机器人,使其根据模型进行操作,但随着项目的进展,我们对该模型进行了更改,本质上是创建了该机器人的不同版本。在我们的系统中,模型的每个版本都有一个类。
一旦您有了不同的版本,最好能够将它们相互比较,看看您的更改是否有任何效果。为此,我们使用自定义属性标记每个计算机播放器类,我们将其称为CPUAttribute.
这就是反射发挥作用的地方:启动时,我们的 GUI 将使用反射查看适当的程序集并找到我们标记的所有类型。然后,这些类型将添加到下拉框中,并在创建播放器时使用反射来实例化所选类型。
| 归档时间: |
|
| 查看次数: |
5541 次 |
| 最近记录: |