Skip to content

Commit 32b1fd5

Browse files
committed
MemberPath - enable getter / setter for readonly reference types in path
1 parent 76608b5 commit 32b1fd5

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/ECS/Entity/MemberPath.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ public static MemberPath Get(Type type, string path)
128128
bool canWrite = true;
129129
bool canRead = true;
130130
MemberInfo memberInfo = null;
131+
var leafIndex = pathItems.Length - 1;
131132
for (int i = 0; i < pathItems.Length; i++)
132133
{
133134
var memberName = pathItems[i];
@@ -140,12 +141,16 @@ public static MemberPath Get(Type type, string path)
140141
if (memberInfo is FieldInfo fieldInfo) {
141142
memberType = fieldInfo.FieldType;
142143
if (fieldInfo.IsInitOnly) {
143-
canWrite = false;
144+
if (i == leafIndex || memberType.IsValueType) {
145+
canWrite = false;
146+
}
144147
}
145148
} else if (memberInfo is PropertyInfo propertyInfo) {
146149
memberType = propertyInfo.PropertyType;
147150
if (!propertyInfo.CanWrite) {
148-
canWrite = false;
151+
if (i == leafIndex || memberType.IsValueType) {
152+
canWrite = false;
153+
}
149154
}
150155
}
151156
if (IsInvalidType(memberType)) {

0 commit comments

Comments
 (0)