1

我有两个项目和一个便携式库。这两个项目都引用了这个库。该库有什么方法可以为两个项目中的每一个提供两种不同的方法实现?

例如,项目是 Server 和 Client,并且库有一个类,其中包含一个名为 SendItem 的方法。

服务端对 SendItem 的实现:

Send(ID);
Send(Name);
Send(Price);

客户端对 SendItem 的实现:

Send(ID); //Server will retrieve rest of information from database

我宁愿不使用额外的参数来指示哪个项目正在调用该方法,因为该方法被许多类调用,并且事情会变得丑陋和复杂。有什么方法可以使用编译条件来完成吗?(可以为每个引用它的项目多次编译库吗?)。

如果使用编译条件无法实现这一点,是否有任何干净的方法可以做到这一点而不会弄乱其他事情?

4

2 回答 2

1

查看服务定位器或控制反转 (IoC) 模式。Daniel 写了一篇关于如何将其应用于便携式库的很好的文章:http: //blogs.msdn.com/b/dsplaisted/archive/2012/08/27/how-to-make-portable-class-图书馆为你工作.aspx

于 2013-08-07T23:49:51.417 回答
0

您可以使用 C# Preprocessor Directives 执行类似的操作,类似于在 C/C++ 中执行的方式,但是以这种方式编写的代码更难维护,并且随着时间的推移变得更加脆弱。最好编写几个不同的函数,而不是把代码弄得乱七八糟:

#if (ANYTHING)
  Console.WriteLine("ANYTHING is defined");
#else
  Console.WriteLine("ANYTHING is NOT defined");
#endif

你明白了。

这是对 MSFT 预处理器信息的参考,因此您可以阅读它: http: //msdn.microsoft.com/en-us/library/ed8yd1ha (v=vs.71).aspx

于 2013-07-20T12:48:31.520 回答