Во-первых, да, я видел эти сообщения:
Is there an easy way in C# to have conditional compilation symbols based on OS version
Conditional compilation depending on the framework version in C#
, но они не нацелены на направление я ищу.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);
}
.. .as, что позволило бы программистам использовать любой объект типа T, когда я хочу, чтобы dwParam был только объектом IntPtr или UInt32, но если я так должен быть таким и сделать это ссылка для других, которые ищут то же самое.
Ваш первый пример кажется кошерным в Visual Studio 2010. Вы получаете сообщение об ошибке? – bluevector