抱歉,但想不出更好的方式来在标题中描述这一点。我也不是真正的开发人员,所以如果我混淆了我的字段、变量、对象和方法,请原谅。
无论如何,我有一些 C# 代码为我的类声明了一个私有变量,它在整个类中都可用。然而,在代码中,我实际上决定了它被声明为什么。当我跳入另一种方法时,由于原始声明,对象/变量的某些功能不可用。
private NetPeer _peer; //initially declared here so it's visible in the entire class
....
public void Initialise()
{
if("some arbitrary validation")
{
_peer = new NetServer(_config); // This is now a NetServer object and not NetPeer, but works fine
}
else
{
_peer = new NetClient(_config); // This is now a NetClient object and not NetPeer, but works fine
}
_peer.Start(); // This works fine as NetClient or NetServer. The method is available to both
}
public void SendIt()
{
_peer.SendToAll(_message); //Now this "SendToAll" is only available with the NetServer and not NetClient. At runtime this fails miserably as you would expect
}
那么有没有办法声明私有“_peer”变量而不将其定义为 NetServer 或 NetClient 直到稍后,或者我需要重新访问我的其余代码并使用两个单独的变量运行。
它与问题并没有明显相关,但我使用的是 Lidgren 库,它是 NetServer 和 NetClient 的来源。我想它很容易是这里引用的任何其他类或方法。
我还删除了许多其他逻辑和代码来展示这个例子。
**编辑:所以我没有意识到问一个通用的问题会引发这样的战斗。代码现在运行良好,我使用了 Damien 的建议,因为这对我来说是最容易理解的: ((NetServer)_peer).SendToAll(_message);
感谢所有为我的问题提供积极帮助的人...