gpt4 book ai didi

c# - 切换替代/可扩展编程的良好做法?

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:48 25 4
gpt4 key购买 nike

<分区>

首先,介绍一下我的问题的背景;我正在用 C# 编写一个模块化的服务器/客户端类型程序。我有一个线程处理系统来处理来自客户端队列的数据包,这是我正在使用的示例:

public delegate object ProcessPacket(object data);
public class QueueHandler
{
//Awesome functions/variables
private void Proccess()
{
object retPacket = client.ProcessPacket(obj);
NetworkCommon.Sendpacket(retPacket, _clientSocket);
}
//Even more awesome functions.
}
//Client ProcessPacket delegate
private static object ProcessPacket(object packet)
{
ReturnPacket ret = new ReturnPacket();
switch (packet.Command)
{
case Command.Login:
//Do login stuff
break;
case Command.Foo;
//Foo stuff
break;
case Command.Bar;
//Bar stuff
break;
default:
ret.Responce = CommandResponce.CommandNotRecognized;
}
return ret;
}

您可以猜到,这不是很容易扩展,并且很难通过添加功能来管理。我的问题是,更实用的方法是什么?

我想到了一个List<string,TProcessCommand>各种各样的,为函数分配一个自定义属性,然后在启动时使用反射构建该列表。但是感觉管理起来可能仍然很麻烦,而且每次启动时都可能不需要处理能力。

我考虑过的另一个选择是使用 MEF ,但我很难思考如何在不使用我不熟悉的 Linq 的情况下在命令之间进行识别。

[[编辑]]我刚刚注意到 MEF example , ExportMetadataAttribute被使用了。我会用我的代码试一试。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com