2012-02-01 43 views
1

我有一个类库,我使用两个链接的项目和链接文件技术在.Net Framework和Silverlight之间共享。便携式类库是否处理条件语句/引用?

我想将其转换为一个便携式类库,但我有一个不同的代码之间的两个。我目前使用条件编译器语句分隔这个文件的实现。

#if SILVERLIGHT 
... 
#else 
... 
#endif 

这是PCL的荣誉吗?

此外,不是silverlight的代码部分引用第三方常规.Net类库。 PCL仍在编译,但是我不能在Silverlight中使用它,因为这个参考。有什么办法可以告诉PCL只将它包含在.Net中?

回答

1

该模式实现编译时可移植性而不是运行时可移植性。

如果你有大量的特定于Silverlight的代码,那么你实际上并没有一个可移植的库 - 你应该考虑将Silverlight特有的代码分解为一个单独的程序集,并让该专用程序集依赖于你的PCL。

如果您的Silverlight特定代码很少,则可以考虑使用反射在运行时动态绑定到Silverlight依赖项。您的PCL可以在任何情况下使用,但如果Silverlight存在,将会“优雅地升级”到Silverlight。

+0

谢谢。我没有考虑反思。 – 2012-02-03 00:46:27