【发布时间】:2011-07-02 00:59:26
【问题描述】:
我有一个 C# 源文件,它在自己的命名空间中保存项目的所有杂项类型。示例:
#define HELPER_FILE
using System;
namespace Helper
{
public struct NormalBalance : INormalType
{
public int Position { get; set; }
public float Normal { get; set; }
}
...
}
然后,其他文件使用这些类型。我想将其中一些分发给我团队中的其他人,但他们不需要所有文件或类型,但某些数据结构是共享的。
例如:
using System;
namespace DataPump
{
public class Pumper
{
private Helper.NormalBalance[] norm;
...
}
...
}
但是这段代码依赖于之前包含 Helper.NormalBalance 类型的文件。我想要一种同步文件的方法,以便一个人知道另一个文件的存在,就像在 C++ 中我们可以在声明类型的文件中使用 #define 指令一样,如果客户端文件没有看到定义的令牌,它将有条件地编译类型如下:
(C++代码如下)
class Pumper
{
private:
#ifndef HELPER_FILE
struct NormalBalance
{
int Position;
float Normal;
}
NormalBalance[] norm;
#else
Helper.NormalBalance[] norm;
#endif
...
}
...
}
不幸的是,#define 指令在 C# 中的作用域只是声明它的文件。有没有办法在 C# 中做到这一点?我需要知道该文件是否包含在项目中,或者是否至少以前定义了一个类型,如果没有,请重新定义它。
【问题讨论】:
标签: c# file types c-preprocessor