【发布时间】:2015-12-21 05:15:44
【问题描述】:
基本上我想要的是将一个类分成多个类。我尝试过使用 partial 函数,但似乎无法正常工作。
我想做的是为case Action.Answer: 下的100多个区域创建多个类,如您所见:
namespace My.Network
{
public unsafe class MsgDialog : Msg
{
public const Int16 Id = _MSG_DIALOG;
public enum Action
{
//Actions used
}
[StructLayout(LayoutKind.Sequential)]
public struct MsgInfo
{
//MsgInfo
}
public static Byte[] Create(Int32 TaskId, Int16 Param, Byte IdxTask, Action Action, String Text)
{
//act
}
public static void Process(Client Client, Byte[] Buffer)
{
try
{
if (Client == null || Buffer == null || Client.User == null)
return;
Int16 MsgLength = (Int16)((Buffer[0x01] << 8) + Buffer[0x00]);
Int16 MsgId = (Int16)((Buffer[0x03] << 8) + Buffer[0x02]);
Int32 TaskId = (Int32)((Buffer[0x07] << 24) + (Buffer[0x06] << 16) + (Buffer[0x05] << 8) + Buffer[0x04]);
Int16 Param = (Int16)((Buffer[0x09] << 8) + Buffer[0x08]);
Byte IdxTask = (Byte)Buffer[0x0A];
Action Action = (Action)Buffer[0x0B];
String Text = Program.Encoding.GetString(Buffer, 0x0E, Buffer[0x0D]);
Player Player = Client.User;
switch (Action)
{
case Action.Answer:
{
100 + Regions
}
}
}
catch (Exception Exc) { Program.WriteLine(Exc); }
}
}
}
根据@Enigmativity 的要求,此处遵循这些区域之一的示例:
case 945:
{
Position += ScriptHandler.SendText("Your inventory is full!", Client, ref Data, Position);
Position += ScriptHandler.SendOption(255, "I see.", Client, ref Data, Position);
Position += ScriptHandler.SendFace(102, Client, ref Data, Position);
Position += ScriptHandler.SendEnd(Client, ref Data, Position);
ScriptHandler.SendData(Client, Data, Position);
break;
}
【问题讨论】:
-
如果你的类中有 100 多个区域,那么你需要的不是部分类而是严重的重构
-
您需要向我们展示
100 + Regions中的代码实际上是什么。也许一个典型的子集就足够了。 -
@Enigmativity 我刚刚将它添加到主帖
-
@Noobzilla - 这很好,但要让我们看到一种模式,我们需要看到不止一个模式。我同意一个是所有的子集,但我的意思是一个实质性的子集。而且,我们还需要查看
Position、ScriptHandler等的类型。您确实需要minimal reproducible example。
标签: c# class partial-views partial partial-classes