Есть ли какая-либо причина для использования внутреннего инициализатора C # при создании шаблона?

#xamarin #xamarin.forms

#xamarin #xamarin.forms

Вопрос:

У меня есть этот пример в моем приложении:

 <?xml version="1.0" encoding="utf-8"?>
<Grid xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:local="clr-namespace:J;assembly=J" 
             x:Class="J.Templates.HelpGrid" 
             Padding="15"
             RowSpacing="10"
             ColumnSpacing="10" />
  

и в c#

 using System;
using System.Collections.Generic;
using Xamarin.Forms;

namespace J.Templates
{
    public partial class HelpGrid : Grid
    {
        public HelpGrid()
        {
            InitializeComponent();
        }
    }
}
  

Из того, что я вижу, код работает, и я могу использовать этот шаблон без моего кодирования на внутреннем c #.

Есть ли какая-либо причина, по которой разработчик, возможно, решил добавить внутренний код C #?

Ответ №1:

Вспомогательный класс (файл c #) необходим компилятору для работы, на данный момент вы не можете этого избежать.

Теоретически можно исключить необходимость в классе backing, но это непросто сделать.

Они могли бы добавить новую задачу в конвейер компиляции, но это сильно замедлит сборку (больше xaml, медленнее).

В конце очень мало преимуществ и много работы, оно того не стоит.

Вы можете прочитать полное объяснение, сделанное сотрудниками Xamarin, здесь: https://github.com/xamarin/Xamarin .Формы / выпуски/4327#issuecomment-436921856