public GetValue(bool isBind, GameObject gameObject, string vString, Type type)
 {
     if (isBind)
     {
         _valueType = ValueTypes.Bind;
         BindValue  = new BindGetValue(gameObject, vString, type);
     }
     else
     {
         _valueType = ValueTypes.Const;
         ConstValue = new ConstValue(vString, type);
     }
 }
        public GetValue(Type type)
        {
            switch (ValueType)
            {
            case ValueTypes.Const:
                ConstValue = new ConstValue(type);
                break;

            case ValueTypes.Bind:
                BindValue = new BindGetValue(type);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public void ChangeType(Type type)
        {
            if (ConstValue == null)
            {
                ConstValue = new ConstValue(type);
            }

            if (BindValue == null)
            {
                BindValue = new BindGetValue(type);
            }

            if (ConstValue.Type.Value != type)
            {
                ConstValue = new ConstValue(type);
            }

            if (BindValue.ReturnType.Value != type)
            {
                BindValue = new BindGetValue(type);
            }
        }