c#中是否有与Python'
本文关键字:Python 是否 | 更新日期: 2023-09-27 18:15:44
我正在为Unity3d提供各种常见模式的代码库。它将作为源代码导入到项目中,而不是编译后的DLL。
一些代码应该只在存在特定依赖项(也作为源代码安装)的地方编译。(在这种情况下,网络代码应该只编译如果Photon安装在项目中)。
我可以手动删除不需要的文件,但是我更喜欢某种自动的方式来有条件地编译类。
如果这是Python,我可以这样做:
try:
import MyLibrary
class MyClass(self):
...
except ImportError:
# library not imported
我知道在一个类中,我可以使用反射来确定是否定义了一个类,但是是否有一种方法可以在更高的级别上做到这一点,即使用类似伪代码的东西:
#if namespace_defined('ExternalDependency') // <-- how can I do this kind of check?
using ExternalDependency;
public class MyClass { ... }
#endif
在c#中,您不可能在代码文件中包含using
子句作为不引用包含导入命名空间的程序集的项目的一部分,因此,您将无法执行该检查。
不能在任何引用的程序集中找到命名空间的using
将产生编译器错误(即您缺少项目引用吗?)。
换句话说,c#鼓励开发人员确保在编译时所有依赖项都是可用的。
实际上,如果你想在代码中执行不同的操作,取决于一些配置,环境或其他什么,似乎你需要坚持控制反转设计模式