IHostBuilder 中温莎的 DictionaryAdapterFactory 相当于什么?



我正在将控制台应用程序从.NET 4.6移动到.NET 5。同时,我们的想法是摆脱Castle.Windsor,并开始使用Microsoft.Extensions.中的内置依赖注入

我会诚实的。我都不习惯。该应用程序有一个IApplicationConfiguration,它代表了我们从app.config文件中需要的内容。

如何将其翻译为IHostBuilder?

提前感谢

在研究了这一点之后,我找到了一个使用反射的解决方案。

这里有一个例子:

using System;
using System.Reflection;
using System.Reflection.Emit;
namespace TestConsoleNet5
{
public class Program
{
public static void Main()
{
AssemblyName aName = new AssemblyName("DynamicAssemblyExample");
AssemblyBuilder ab =
AssemblyBuilder.DefineDynamicAssembly(
aName,
AssemblyBuilderAccess.RunAndCollect);
ModuleBuilder mb =
ab.DefineDynamicModule(aName.Name + "Module");
TypeBuilder tb = mb.DefineType(
"MyDynamicType",
TypeAttributes.Public);
BuildPropertyAndConstructor(tb, "This is a test");
tb.AddInterfaceImplementation(typeof(ITest));
var type = tb.CreateType();
ITest test = Activator.CreateInstance(type) as ITest;
Console.WriteLine(test.propTest);
}
private static void BuildPropertyAndConstructor(TypeBuilder typeBuilder, string defaultValue)
{
string propName = "propTest";
FieldBuilder field = typeBuilder.DefineField("m" + propName, typeof(string), FieldAttributes.Private);
PropertyBuilder propertyBuilder = typeBuilder.DefineProperty(propName, PropertyAttributes.None, typeof(string), null);
MethodAttributes getSetAttr = MethodAttributes.Public |
MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Virtual;
MethodBuilder getter = typeBuilder.DefineMethod("get_" + propName, getSetAttr, typeof(string), Type.EmptyTypes);
ILGenerator getIL = getter.GetILGenerator();
getIL.Emit(OpCodes.Ldstr, defaultValue);
getIL.Emit(OpCodes.Ret);

propertyBuilder.SetGetMethod(getter);
}
}
public interface ITest
{
string propTest { get; }
}
}

所以,你在哪里找到";这是一个测试";您应该传递配置文件中的值。

此外,接口应为IApplicationConfiguration

它有点乱,但它很管用。

最新更新