Skip to content

Commit c26c922

Browse files
committed
feat: Chain To with creator
1 parent 67035a1 commit c26c922

File tree

4 files changed

+35
-1
lines changed

4 files changed

+35
-1
lines changed

Documentation/usage-decorator.md.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Documentation/usage-di.md.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Documentation/usage-proxy.md.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Runtime/ClassicalUsages/ServiceContainer.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static class ServiceContainer
2626
//: IServiceContainer
2727
{
2828
static ServiceScopeMode DefaultScopeMode => Single;
29-
static Dictionary<Type, object> singletons = new();
29+
internal static Dictionary<Type, object> singletons = new();
3030
internal static Dictionary<(Type desiredType, Type declaringType), Info> lutInfos = new();
3131
public static void ClearInstances()
3232
{
@@ -250,6 +250,19 @@ public void To<TDest>(params object[] arguments) where TDest : TSource
250250
ServiceContainer.Get(desiredType, declaringType);
251251
}
252252
}
253+
254+
public void To<TDest>(Func<TDest> creator) where TDest : TSource
255+
{
256+
var typePair = (desiredType, declaringType);
257+
Debug.Log($"to {scopeMode} {typeof(TDest)}");
258+
ServiceContainer.lutInfos[typePair] = new()
259+
{
260+
resultType = typeof(TDest),
261+
scopeMode = scopeMode,
262+
// constructorArguments = arguments,
263+
};
264+
ServiceContainer.singletons[typeof(TDest)] = creator();
265+
}
253266
}
254267

255268
struct Info

0 commit comments

Comments
 (0)