我想看看是否有办法做到这一点......我正在使用带有 WP7 SDK 的 vs2010。(VB.NET)
我在全球范围内宣布这一点。
public objGame as object
然后说我有课:Game1
和Game2
为了这个例子,我们只说两个类都有一个Update()
函数
我想设置objGame = Game1
(或 Game2)
然后就可以打电话了objGame.Update()
有没有办法做到这一点?
使用方法 Update() 声明一个接口 IGame。从它继承 Game1 和 Game2。
IGame objGame= Game1() [or Game2]
objGame.Update()
这是关于 OOP 中多态性的 wiki链接。
您可以使用反射来获取类对象的类型,然后在将其转换为特定类后调用更新方法。
C# 中的代码片段,可能你会明白该怎么做。在 Shared 类中object
,将对象设置为您的类 Game1 或 Game2。然后访问然后使用很少的反射来处理对象是运行时。
public static class GameCommon
{
public static object currentGame;
}
/// 使用 .GetType()
GameCommon.currentGame = new Game1();
if (GameCommon.currentGame != null)
{
Type type = GameCommon.currentGame.GetType();
if (type.Name == "Game1")
{
((Game1)GameCommon.currentGame).Update();
}
else if (type.Name == "Game2")
{
((Game2)GameCommon.currentGame).Update();
}
}`
另一种最好的方法是Interface
多态性,恕我直言,它是实现的正确方法..
检查这个:
public static class GameCommon
{
public static IGame currentGame;
}
public interface IGame
{
void Update();
}
public class Game1 : IGame
{
public void Update()
{
Console.WriteLine("Running:Game1 Updated");
}
}
public class Game2 : IGame
{
public void Update()
{
Console.WriteLine("Running:Game2 Updated");
}
}`
称它为:
GameCommon.currentGame = new Game1();
if (GameCommon.currentGame != null)
{
GameCommon.currentGame.Update();
}
GameCommon.currentGame = new Game2();
GameCommon.currentGame.Update();
Console.ReadKey();`
希望这对你有帮助..
首先将您的公共对象声明为 Game1 或 Game2
Public objGame As New Game1
然后,无论您对对象做什么,实际上都代表 Game1 或 Game2
objGame.Update()