Может ли вместо этого быть свойство «int Length»?

Обычно установка int Length автоматически дает вам захваченную длину объектов. (Вы можете использовать datas.Length и получить тот же результат, но на один уровень глубже)

Но что, если это то же имя, но свойство? (Так что, возможно, я мог бы применить его через interface , так как они могут объявлять свойства, но не поля)

Неа…

ArgumentException: JustChecking:cg An [Inject] struct, supports only a specialized int storing the length of the group. (“int Length;”)
Unity.Entities.InjectComponentGroupData.CreateInjection (System.Type injectedGroupType, System.Reflection.FieldInfo groupField, Unity.Entities.ComponentSystemBase system) (at /Users/Sargon/Library/Unity/cache/packages/staging-packages.unity.com/[email protected]/Unity.Entities/Injection/InjectComponentGroup.cs:126)

(вау! Какое редкое сообщение об ошибке!)

Может ли тогда ComponentDataArray быть свойством?

Тогда как насчет этого:

Оно работает! (Он был введен, и система работает и т. д.) Потому что технически существует резервное поле, в которое внедряется. Это свойство является всего лишь шлюзом к введенному значению. Так что да, это сработает.

Почему это здорово, потому что interface не может объявлять поля, но может объявлять свойства. Интерфейс — это единственное, что ваша структура может иметь какую-либо гибкость. И если ваш класс реализует интерфейс, это может привести к очень организованному коду. (Например, вы можете убедиться, что эта введенная структура имеет 1 EntityArray и два ComponentDataArray , один как тег, а один - фактические данные и т. д., и сделать еще более удобный метод для их обработки)

Однако [ReadOnly] и друзья недействительны в свойствах.

Они для полей, параметров ( IJobProcessComponentData ) и возвращаемого значения (где?)

Однако в грядущей версии C# 7.3 есть возможность помещать атрибуты в резервное поле. Так что * я думаю * это может позволить поместить [ReadOnly] в свойство и повлиять на введенное резервное поле.





Лидер «Автоматическая реализация атрибутов, ориентированных на поля свойств (15.7) · Выпуск № 42 ·…
Эта функция предназначена для того, чтобы позволить разработчикам применять атрибуты непосредственно к вспомогательным полям автоматически реализовано…github.com»



Статус уже «доработан», и я слышал, что бета-версия 7.3 уже вышла. Когда он появится в инкрементальном компиляторе Unity (в настоящее время C#7.2), я думаю, мы могли бы сделать это: