C#(Unity):自动生成属性来访问字段的字段

问题描述 投票:0回答:0

我创建了一个小的

Presettable
系统:每个
Presettable
对象都有一个
Preset
字段,其中
Preset
只是一个
ScriptableObject

public abstract class PresettableMonoBehaviour<TPreset>: MonoBehaviour, IPresettable<TPreset> 
        where TPreset : IPreset
    {
        [SerializeField] 
        private TPreset preset;
        public TPreset Preset => preset;

        ...
    }

假设我定义了这个简单的

Presettable
/
Preset
对:

public class MyPresettable : PresettableMonoBehaviour<MyPreset>
{
        public int RelevantNumberIncremented() { return Preset.RelevantNumber + 1; }
}

public class MyPreset : Preset<MyPresettable>
{
        [field: SerializeField]
        public int RelevantNumber { get; private set; } = 10;
}

理想情况下,我希望能够通过仅调用

Preset.RelevantNumber
来访问
RelevantNumber
,因为从逻辑上讲它直接是
MyPresettable
的一部分。但是我不想定义属性来逐一访问每个
Preset
的字段,我想自动生成(显式或隐式)履行与
private int RelevantNumber => Preset.RelevantNumber;

相同角色的属性

可能吗?

我尝试查看自定义属性,但问题没有改变:我仍然需要调用

myAttribute.RelevantField
.

另一种选择是使用字符串和反射,但是我不太喜欢它,因为它要求您知道您的每个字段的确切名称

Preset

c# unity3d reflection attributes
© www.soinside.com 2019 - 2024. All rights reserved.