如何在预处理器指令中使用隐式运算符?

时间:2019-10-02 13:34:17

标签: c# .net-core preprocessor preprocessor-directive

我有一个共享的类库。因此,我想创建隐含在平台上的运算符。 但是此代码无法正常工作。

using System;
using GTANetworkAPI;

namespace FoxRPShared.Utils {
    public class Vector3 {
        public float X;
        public float Y;
        public float Z;
        public Vector3() { }
        public Vector3(float x, float y, float z) {
            X = x;
            Y = y;
            Z = z;
        }
#if SERVER
        public static implicit operator GTANetworkAPI.Vector3(Vector3 v) => new GTANetworkAPI.Vector3(v.X, v.Y, v.Z);
        public static implicit operator Vector3(GTANetworkAPI.Vector3 v) => new Vector3(v.X, v.Y, v.Z);
#else
        public static implicit operator RAGE.Vector3(Vector3 v) => new RAGE.Vector3(v.X, v.Y, v.Z);
        public static implicit operator Vector3(RAGE.Vector3 v) => new Vector3(v.X, v.Y, v.Z);
#endif
    }
}

不幸的是,我收到类似Cannot implicitly convert type "FoxRPShared.Utils.Vector3" to "GTANetworkAPI.Vector3".(CS0029)的错误消息
enter image description here 如果我删除指令,则代码会编译。

0 个答案:

没有答案