필요시 추후 개요 작성
#r "nuget: Microsoft.Extensions.DependencyInjection, 9.0.3"
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
static IServiceCollection TryAddTransientWithDependencies(this IServiceCollection sc, Type t)
{
sc.TryAddTransient(t);
foreach(var param in t.GetConstructors().Single().GetParameters())
sc.TryAddTransientWithDependencies(param.ParameterType);
return sc;
}
class Tr : IDisposable
{
public Tr() => Console.WriteLine("New Transient");
public void Dispose() => Console.WriteLine("Dispose Transient");
}
class Naratteu(Tr member1, Tr member2)
{
public void Hello() => Console.WriteLine("Hello World!");
readonly static IServiceProvider sp = new ServiceCollection()
.TryAddTransientWithDependencies(typeof(Naratteu)).BuildServiceProvider();
public static IDisposable UseTransient(out Naratteu n)
{
var scope = sp.CreateScope();
n = scope.ServiceProvider.GetRequiredService<Naratteu>();
return scope;
}
}
using(Naratteu.UseTransient(out var n))
n.Hello();
+2025-04-21
비슷한 스타일로 괜히 json 읽어내기 해보려다 파기
이런 경우의 수를 다 통제할수있을리는 없으므로 파기
?
인젝션의 책임은 사용자가 지도록 디자인 :
https://gist.github.com/naratteu/e10d769eb7c11195f60431981989a046