Я получаю публичные sh ошибки для PXDefault в коде ниже - PullRequest
0 голосов
/ 09 марта 2020

Я проверил все скобки и синтаксис кода, и это единственный опубликованный код. Я удалил все остальное

using PX.Objects;
using PX.Data;

namespace MaxQ.Products.RBRR
{
  public class ContractMaint_Extension : PXGraphExtension<ContractMaint>
  {
    #region Event Handlers

    protected virtual void XRBContrHdr_DestSiteID_CacheAttached(PXCache cache)
      {   
         [PXDefault(typeof(Search2<INSite.siteCD,
          InnerJoin<BAccount, On<BAccount.bAccountID, Equal<Current<XRBContrHdr.bAccountID>>>,
          InnerJoin<LocationExtAddress, On<LocationExtAddress.locationID, Equal<BAccount.defLocationID>>>>,
          Where<INSite.siteID, Equal<LocationExtAddress.cSiteID>>>), PersistingCheck = PXPersistingCheck.Nothing)]
      }

    #endregion
  }
}

ошибка, которую я получаю:

\ App_RuntimeCode \ ContractMaint.cs (13): ошибка CS1513:} ожидается

\ App_RuntimeCode \ ContractMaint.cs (18): ошибка CS1519: недопустимый токен '}' в объявлении члена класса, структуры или интерфейса

\ App_RuntimeCode \ ContractMaint.cs (22): ошибка CS1022: определение типа или пространства имен, ожидается конец файла

\ App_RuntimeCode \ ContractMaint.cs (13): ошибка CS1513:} ожидается

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Сообщения об ошибках указывают на искаженный блок {} в исходном коде: enter image description here

Это происходит потому, что атрибуты необходимо поместить перед методом для декорирования метода:

[PXDefault(…)]
protected virtual void XRBContrHdr_DestSiteID_CacheAttached(PXCache cache)
{
}

В вашем коде атрибуты помещаются в определение метода, которое недопустимо в C#:

protected virtual void XRBContrHdr_DestSiteID_CacheAttached(PXCache cache)
{
   [PXDefault(…)]
}
0 голосов
/ 09 марта 2020

В случае метода, прикрепленного к кешу, атрибуты определяются в методе, вам также необходимо указать метод «перезаписи» для атрибутов в поле. Поэтому рабочим примером будет

[PXMergeAttributes(Method = MergeMethod.Append)]    
[PXDefault(typeof(Search2<INSite.siteCD,
      InnerJoin<BAccount, On<BAccount.bAccountID, Equal<Current<XRBContrHdr.bAccountID>>>,
      InnerJoin<LocationExtAddress, On<LocationExtAddress.locationID, Equal<BAccount.defLocationID>>>>,
      Where<INSite.siteID, Equal<LocationExtAddress.cSiteID>>>), PersistingCheck = PXPersistingCheck.Nothing)]
virtual void XRBContrHdr_DestSiteID_CacheAttached(PXCache cache) {}

Этот справочный документ объяснит больше об атрибуте PXMergeAttributes

...