[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,80 @@
using System;
namespace VContainer.Internal
{
sealed class TypedParameter : IInjectParameter
{
public readonly Type Type;
public readonly object Value;
public TypedParameter(Type type, object value)
{
Type = type;
Value = value;
}
public bool Match(Type parameterType, string _) => parameterType == Type;
public object GetValue(IObjectResolver _)
{
return Value;
}
}
sealed class FuncTypedParameter : IInjectParameter
{
public readonly Type Type;
public readonly Func<IObjectResolver, object> Func;
public FuncTypedParameter(Type type, Func<IObjectResolver, object> func)
{
Type = type;
Func = func;
}
public bool Match(Type parameterType, string _) => parameterType == Type;
public object GetValue(IObjectResolver resolver)
{
return Func(resolver);
}
}
sealed class NamedParameter : IInjectParameter
{
public readonly string Name;
public readonly object Value;
public NamedParameter(string name, object value)
{
Name = name;
Value = value;
}
public bool Match(Type _, string parameterName) => parameterName == Name;
public object GetValue(IObjectResolver _)
{
return Value;
}
}
sealed class FuncNamedParameter : IInjectParameter
{
public readonly string Name;
public readonly Func<IObjectResolver, object> Func;
public FuncNamedParameter(string name, Func<IObjectResolver, object> func)
{
Name = name;
Func = func;
}
public bool Match(Type _, string parameterName) => parameterName == Name;
public object GetValue(IObjectResolver resolver)
{
return Func(resolver);
}
}
}