Skip to content

Commit 9703098

Browse files
committed
Define a generic interface
1 parent 5fadcb6 commit 9703098

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

Assets/Example/Example_Generics.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,32 @@ public void DoAction (IActor actor)
8383
public IActor Actor => null;
8484
}
8585

86+
namespace TestExample.Generics
87+
{
88+
public interface IObjectHolder<T>
89+
{
90+
T Value { get; }
91+
}
92+
93+
[Serializable]
94+
public sealed class ObjectHolder<T> : IObjectHolder<T>
95+
{
96+
[SerializeField]
97+
private T value;
98+
99+
public T Value => value;
100+
}
101+
102+
[Serializable]
103+
public sealed class ParticleSystemHolder : IObjectHolder<ParticleSystem>
104+
{
105+
[SerializeField]
106+
private ParticleSystem value;
107+
108+
public ParticleSystem Value => value;
109+
}
110+
}
111+
86112
public class Example_Generics : MonoBehaviour
87113
{
88114

@@ -98,4 +124,10 @@ public class Example_Generics : MonoBehaviour
98124
[SerializeReference, SubclassSelector]
99125
public List<ICovarianceAction<INetworkActor>> covarianceActions = new List<ICovarianceAction<INetworkActor>>();
100126

127+
[SerializeReference, SubclassSelector]
128+
public TestExample.Generics.IObjectHolder<GameObject> gameObjectHolder = null;
129+
130+
[SerializeReference, SubclassSelector]
131+
public TestExample.Generics.IObjectHolder<ParticleSystem> particleSystemHolder = null;
132+
101133
}

0 commit comments

Comments
 (0)