Zenject
Zenject copied to clipboard
i need to declare many signals. is there a solution for that?
there are many classes that i finish the name with "Signal" and i define them with DeclareSignal.
I think there can be a solution that declares many signal classes automatically like using reflection and attributes.
public override void InstallBindings()
{
SignalBusInstaller.Install(Container);
InstallBindingsOfType<GameSignalBase>(false);
InstallBindingsOfType<OptionalGameSignalBase>(true);
}
private void InstallBindingsOfType<T>(bool bOptional)
{
var signalTypeEnumerator = Assembly.GetAssembly(GetType()).GetTypes()
.Where(t => t.IsClass && !t.IsAbstract && typeof(T).IsAssignableFrom(t));
var typeEnumerator = signalTypeEnumerator.ToList();
if (typeEnumerator.Any())
{
foreach (var type in typeEnumerator)
{
if (bOptional)
{
Container.DeclareSignal(type).OptionalSubscriber();
}
else
{
Container.DeclareSignal(type);
}
}
}
}