Может ли вместо этого быть свойство «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), я думаю, мы могли бы сделать это: