这是我的代码WorldServer.cs
:
public class JsonData
{
public string header;
public Dictionary<string, string> data = new Dictionary<string, string>();
public int connectionId;
}
namespace Server
{
public class WorldServer
{
private Character character = new Character();
void Test()
{
character.UpdateCharacterState();
}
public void Broadcast()
{
Console.WriteLine("We in Broadcast");
}
}
}
这是我的Character.cs
:
public class Character : WorldServer
{
public void UpdateCharacterState()
{
Console.WriteLine("State:");
Broadcast();
}
}
当我尝试运行我的代码时,我收到以下错误:
类型的异常&#39; System.StackOverflowException&#39;被扔了。
我有一个基类WorldServer
和一个扩展它Character
的基类。我必须从WorldServer
类调用方法UpdateCharacterState
,并从Character
类调用Broadcast
类中声明的WorldServer
类。有可能吗?怎么样?
你能告诉我我的错误在哪里,我该如何解决?
答案 0 :(得分:2)
好的,所以这会起作用....但是它不是很好的OOP,但是当你学习如何编码时,我会把它留给你的旅程(和未来的问题)。
总之...
using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var server = new WorldServer();
server.Test();
}
}
public class JsonData
{
public string header;
public Dictionary<string, string> data = new Dictionary<string, string>();
public int connectionId;
}
public class WorldServer
{
private Character character = new Character();
public void Test() {
character.UpdateCharacterState(this);
}
public void Broadcast(){
Console.WriteLine("We in Broadcast");
}
}
public class Character
{
public void UpdateCharacterState(WorldServer server)
{
Console.WriteLine("State:");
server.Broadcast();
}
}
}
我认为你需要研究的是课程与实例以及实际意义。我给出的修改后的代码为您介绍了一个新概念(潜在地),您可以称之为&#34;依赖注入&#34;这是引用其他对象类型的好方法....尝试尽可能地限制继承的使用。
祝你好运并继续学习!