首先,是的,我看过这些帖子:
C# 中是否有一种简单的方法可以根据 OS 版本使用条件编译符号
条件编译取决于 C# 中的框架版本,
但它们并不针对我正在寻找的方向。
我正在寻找的是通过操作系统版本的变量 _type_ 限定:
public struct REPASTESPECIAL
{
UInt32 dwAspect;
#if WINVER >= 6.0
UIntPtr dwParam;
#else
UInt32 dwParam;
#endif
}
我不想回到这样的状态:
public struct REPASTESPECIAL<T>
{
UInt32 dwAspect;
T dwParam;
}
// return type by OS version
public static Type GetRePasteSpecial_ParamType()
{
if (Environment.OSVersion.Version.Major >= 5) return typeof(IntPtr);
else return typeof(UInt32);
}
...因为这将允许程序员在我希望 dwParam 仅成为 IntPtr 或 UInt32 对象时使用 T 类型的任何对象,但如果我必须这样做,并将其作为其他寻找相同对象的参考。