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#中是否有与Python'

在c#中,您不可能在代码文件中包含using子句作为不引用包含导入命名空间的程序集的项目的一部分,因此,您将无法执行该检查。

不能在任何引用的程序集中找到命名空间的using将产生编译器错误(即您缺少项目引用吗?)。

换句话说,c#鼓励开发人员确保在编译时所有依赖项都是可用的。

实际上,如果你想在代码中执行不同的操作,取决于一些配置,环境或其他什么,似乎你需要坚持控制反转设计模式