Попытка использовать нестатический объект в Списке объектов - PullRequest
0 голосов
/ 26 апреля 2019

Я работаю с Razor Components и у меня есть вопрос об использовании non-static values в list of objects.

У меня есть следующий код:

     @page "/CircularGauge/DefaultFunctionalities"

@using Syncfusion.EJ2.RazorComponents.CircularGauge



   <div class="control-section">
      <EjsCircularGauge ID="gauge" Axes="axes"></EjsCircularGauge>
   </div>

   @functions {
   int myInteger = 21;
   public List<Object> axes { get; set; } = new List<Object>
   {
   new
   {
      radius = "80%",
      startAngle = 230,
      endAngle = 130,
      majorTicks = new { width = "0px" },
      minorTicks = new { width = "0px" },
      lineStyle = new { width = 8, color = "#E0E0E0" },
      labelStyle = new { font = new { fontFamily = "Roboto", size =      "12px", fontWeight = "Regular" }, offset = -5 },
      pointers  = new List<Object>
      {
      new
      {
        value = 60,
        radius = "60%",
        color = "#757575",
        pointerWidth = 7,
        cap = new { radius = 8, color = "#757575", border = new { width = 0 } },
        needleTail = new { color = "#757575", length = "25%" }
    }
}
 }
  };
  }

Источник: https://ej2.syncfusion.com/aspnet-core-blazor/CircularGauge/DefaultFunctionalities

У меня есть целое число, которое я использую в своем коде, например:

     int myInteger = 21;

, что я хотел сделать, это в коде выше, по адресу:

      pointers  = new List<Object>
      {
      new
      {
        ****value = 60,****
        radius = "60%",
        color = "#757575",
        pointerWidth = 7,
        cap = new { radius = 8, color = "#757575", border = new { width = 0 } }
     }

Былизменив значение value на мое локальное целое число, но это невозможно.

This is why

Я застрял в поиске решения вокруг этого.кто-нибудь знает об этом?

1 Ответ

1 голос
/ 26 апреля 2019

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

Вы должны определить myInteger как статический private static int myInteger. Или вы можете установить значение свойства в конструкторе, и там вы можете использовать локальную переменную в конструкторе.

Но, если вы хотите определить постоянную переменную, подобную этой, я бы лучше порекомендовал вам сделать это следующим образом:

private const int MY_INTEGER = 21;
...