[Add] VContainer

This commit is contained in:
2026-04-07 04:51:37 +07:00
parent 76562726ec
commit 4f9b878775
193 changed files with 8036 additions and 0 deletions
@@ -0,0 +1,43 @@
#if VCONTAINER_ECS_INTEGRATION
using System;
using System.Collections.Generic;
using Unity.Entities;
using VContainer.Internal;
namespace VContainer.Unity {
public sealed class SystemRegistrationBuilder : RegistrationBuilder {
readonly string worldName;
Type systemGroupType;
internal SystemRegistrationBuilder(Type implementationType, string worldName)
: base(implementationType, default) {
this.worldName = worldName;
InterfaceTypes = new List<Type> {
typeof(ComponentSystemBase),
implementationType
};
}
public override Registration Build() {
var injector = InjectorCache.GetOrBuild(ImplementationType);
var parameters = new object[] {
ImplementationType,
worldName,
systemGroupType,
injector,
Parameters
};
Type type = typeof(SystemInstanceProvider<>).MakeGenericType(ImplementationType);
var provider = (IInstanceProvider)Activator.CreateInstance(type, parameters);
return new Registration(ImplementationType, Lifetime, InterfaceTypes, provider, Key);
}
public SystemRegistrationBuilder IntoGroup<T>() where T : ComponentSystemGroup {
systemGroupType = typeof(T);
return this;
}
}
}
#endif