Разработчик Visual Studio всегда пытается изменить мое управление

Кто-нибудь знает лучший способ определения / разграничения представления или запроса, написанного в Legacy или Standard SQL, с использованием API BigQuery?

Вы можете попробовать использовать регулярное выражение javascript определить тип SQL.

Вы можете использовать приведенный ниже фрагмент кода в качестве базовой линии

isStandardSql(idString) {
  let isStandard, fullId, partialId, projectId = '';
  // This 'if' checks if the provided idString is of type standard and makes sure there is only one ':' in the expression (as in legacy syntax)
  const splitted = idString.split(/[:.]/g);
  if (splitted.length > 3) {
    const __ret = this.try2findProjectId(idString, projectId);
    idString = __ret.idString;
    projectId = __ret.projectId;
  }
  if ((idString.match(/:/g))) {
    // Regex that checks if the format of the id match legacy
    let matched = idString.match(/([\[]([^[]|[\[][\]])*[\]])/g);
    if (matched && matched[0]) {
    fullId = projectId + matched[0].substring(1, idString.length - 1);
    isStandard = false;
    } else {
    this.errorMessage("First Regex", idString);
    }
    // Same as the first only that here instead of ':' we are looking for '.' and we want to make sure there is more than 1 (as in standard syntax)
  } else if ((idString.match(/\./g) && idString.match(/\./g).length === 2)) {
    // Regex that checks if the format of the id match standard
    let matched = idString.match(/(`([^`]|``)*`)/g);// ? idString.match(/(`([^`]|``)*`)/g) : [idString];
    if (matched && matched[0]) {
    fullId = projectId + matched[0].substring(1, idString.length - 1);
    isStandard = true
    } else if(!matched && idString){
    fullId = projectId + idString;
    isStandard = true;
    }
    else {
    this.errorMessage("Second Regex", idString);
    }
  }
  else {//projectID.dataset
    // In case of id without projectId of proxy "use" project.dataset
    if(splitted.length === 2) {
      fullId = '';
      if (idString[0] === '[' && idString[idString.length - 1] === ']') {
        isStandard = false;
      }
      else if (idString[0] === '`' && idString[idString.length - 1] === '`') {
        isStandard = true;
      }
      partialId = idString.replace(/`|\[|\]/g, '')
    }
    else {
      this.errorMessage("Third Regex", idString);
    }
  }
  // Return values is flag the determine the type (standard or legacy) and id without staring/ ending chars (``, [])
  return {
    isStandard,
    fullId: fullId,
    partialId: partialId
  };
  }


try2findProjectId(idString, projectId)
    {
        let numOfInstances = 0
        for (let i = idString.length; i > 0; i--) {
            const char = idString[i - 1]
            if (char === ':' || char === '.') {
                numOfInstances++
                if (numOfInstances === 2) {
                    projectId = idString.substring(1, i - 1)
                    idString = idString.substring(i - 1, idString.length)
                    idString = idString[idString.length - 1] === '`' ? '`' + idString : idString
                    idString = idString[idString.length - 1] === ']' ? '[' + idString : idString
                }
            }
        }
        return {idString, projectId}
    }
18
задан Not Sure 28 April 2009 в 00:12
поделиться

3 ответа

Вы правы, дизайнер часто пытается добавить значения по умолчанию к свойствам.

Добавьте это поверх объявления свойства:

5
ответ дан 30 November 2019 в 09:15
поделиться

У меня есть несколько похожая проблема. Я использую Infragistics GroupBox в пользовательском элементе управления, который я унаследовал, и теперь хочу изменить его внешний вид в производном классе. Я сделал его защищенным в базовом классе - поэтому он позволяет мне изменять свойства в производном классе. Но это не спасает его. Каждый раз, когда я открываю его - я получаю старые значения базового класса.

Есть идеи?

Редактировать: Я понял это.

Попытка различного значения для одного из приведенных выше ответов. Использование [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)] вместо [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] создает код для измененных свойств - и все работает как требуется.

1
ответ дан 30 November 2019 в 09:15
поделиться

Попробуйте переопределить свойство DefaultSize вашего элемента управления.

Из MSDN: Свойство DefaultSize представляет размер элемента управления при его первоначальном создании.

0
ответ дан 30 November 2019 в 09:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: