我正在开发一个客户端-服务器库。某些类可以由客户端或服务器使用,但执行方式不同,并且每个类产生的结果略有不同。同样,服务器代码可能包含不会从客户端构建中调用的其他方法。
一个类可能如下所示:
public class StuffDoer {
public void DoStuff(object msg)
{
ServerDoStuff(msg);
ClientDoStuff(msg);
}
[Conditional("SERVER")]
private void ServerDoStuff(object msg)
{
// Do secret server stuff...
}
[Conditional("CLIENT")]
private void ClientDoStuff(object msg)
{
// Do client sutff...
}
[Conditional("SERVER")]
public void DoCoolStuff(object msg)
{
// server does cool stuff...
}
}
我读过 Conditional 属性仍然编译代码,因此会在构建中,不像预处理器指令会完全删除代码甚至不编译它。
我担心不诚实的客户可能会通过不混淆源代码并弄清楚服务器的工作原理来破解产品。
我的担心是没有根据的,还是我需要放置预处理器指令来隐藏源代码?