从 .net6 升级到 .net7 Rc1 时违反类型“T”的约束

M.B*_*lah 5 c# automapper winforms .net-7.0

在更改目标框架并更新 NuGet 包后,我尝试将我的 WinForms 项目从 .net6 升级到 .net7 Rc1,当我运行该项目时,出现此错误

“T MaxFloatT”上的 GenericArguments[0]、“System.Int32”违反了类型“T”的约束。

在这行代码上

System.Windows.Forms.Application.Run(host.Services.GetRequiredService<XtraMain>());
Run Code Online (Sandbox Code Playgroud)

这是Program.cs中的代码

    [STAThread]
    private static void Main()
    {
        WindowsFormsSettings.ForceDirectXPaint();
        DevExpress.UserSkins.BonusSkins.Register();
        DevExpress.Skins.SkinManager.EnableFormSkins();
        System.Windows.Forms.Application.EnableVisualStyles();
        System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
        System.Windows.Forms.Application.SetHighDpiMode(HighDpiMode.SystemAware);
        
        using IHost host = CreateHostBuilder().Build();
        System.Windows.Forms.Application.Run(host.Services.GetRequiredService<XtraMain>());


    }

    private static IHostBuilder CreateHostBuilder() =>Host.CreateDefaultBuilder()
            .ConfigureAppConfiguration((context, builder) =>
            {
                builder
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables(); 
            })
            .ConfigureServices((context, services) =>
            {
                services.AddScoped<XtraMain>();
                services.AddPersistenceServices(context.Configuration);
                services.AddApplicationServices();
                services.AddSingleton<IFormFactory, FormFactory>();
            });
Run Code Online (Sandbox Code Playgroud)

这是 StackTrace:

在System.RuntimeType.ValidateGenericArguments(MemberInfo定义,RuntimeType [] genericArguments,Exception e)在System.Reflection.RuntimeMethodInfo.MakeGenericMethod(Type [] methodInstantiation)在AutoMapper.Internal.TypeDetails。<> c__DisplayClass25_1.b__10(MethodInfo扩展方法)在系统.Linq.Enumerable.WhereSelectArrayIterator 2.MoveNext() at System.Linq.Enumerable.ConcatIterator1.MoveNext() 在 System.Linq.Enumerable.d__231 3.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext()
在 System.Linq.Enumerable.UnionIterator 1.MoveNext() at System.Linq.Enumerable.ConcatIterator1.MoveNext() 在 AutoMapper.Internal.TypeDetails.PossibleNames() 在 AutoMapper。 Internal.TypeDetails.GetMember(字符串名称)在 AutoMapper.Configuration.Conventions.DefaultName.GetMatchingMemberInfo(TypeDetails sourceTypeDetails,类型 destType,类型 destMemberType,字符串 nameToSearch) 在 AutoMapper.Configuration.Conventions.ParentSourceToDestinationNameMapper.GetMatchingMemberInfo(TypeDetails sourceTypeDetails,类型 destType,类型destMemberType,字符串 nameToSearch) 在 AutoMapper.Configuration.Conventions.DefaultMember.MapDestinationPropertyToSource(ProfileMap 选项,TypeDetails sourceTypeDetails,类型 destType,类型 destMemberType,字符串 nameToSearch,列表1 resolvers, IMemberConfiguration parent, Boolean isReverseMap) at AutoMapper.Configuration.Conventions.MemberConfiguration.MapDestinationPropertyToSource(ProfileMap options, TypeDetails sourceType, Type destType, Type destMemberType, String nameToSearch, List1 解析器,布尔 isReverseMap) 在 AutoMapper.Configuration.Conventions.NameSplitMember.MapDestinationPropertyToSource(ProfileMap)选项,TypeDetails sourceType,类型 destType,类型 destMemberType,字符串 nameToSearch,列表1 resolvers, IMemberConfiguration parent, Boolean isReverseMap) at AutoMapper.Configuration.Conventions.MemberConfiguration.MapDestinationPropertyToSource(ProfileMap options, TypeDetails sourceType, Type destType, Type destMemberType, String nameToSearch, List1 解析器,布尔 isReverseMap) 在 AutoMapper.ProfileMap.MapDestinationPropertyToSource(TypeDetails sourceTypeDetails,类型 destType,类型 destMemberType,字符串 destMemberName,列表1 members, Boolean reverseNamingConventions) at AutoMapper.TypeMap..ctor(Type sourceType, Type destinationType, ProfileMap profile, Boolean isReverseMap) at AutoMapper.ProfileMap.BuildTypeMap(IGlobalConfiguration configurationProvider, ITypeMapConfiguration config) at AutoMapper.ProfileMap.Register(IGlobalConfiguration configurationProvider) at AutoMapper.MapperConfiguration.Seal() at AutoMapper.MapperConfiguration..ctor(MapperConfigurationExpression configurationExpression) at Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions.<>c.<AddAutoMapperClasses>b__12_2(IServiceProvider sp) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument 参数)在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor 2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType) at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func 2 valueFactory) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope) at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions.<>c.<AddAutoMapperClasses>b__12_3(IServiceProvider sp) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) 在 Microsoft Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor 处的.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitDisposeCache(ServiceCallSite instantCallSite, RuntimeResolverContext context) 2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument 参数) 处 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver。访问DisposeCache( Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor 处的 ServiceCallSitetransientCallSite、RuntimeResolverContext 上下文)2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite,TArgument参数)在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite,RuntimeResolverContext上下文)在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite,RuntimeResolverContext上下文)在微软.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite,TArgument参数)在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite,ServiceProviderEngineScope范围)在Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine。< >c__DisplayClass2_0.b__0(ServiceProviderEngineScope范围)在Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(类型serviceType,ServiceProviderEngineScope serviceProviderEngineScope)
在Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(类型serviceType)在Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService( IServiceProvider 提供程序,类型 serviceType)位于 Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider 提供程序)位于 C:\Users\MBoua\source\repos\SmartWinForm\SmartWinForm\Program.cs 中的 SmartWinForm.Program.Main() :第 30 行

M.B*_*lah 11

在alpha版本中,该问题已修复
AutoMapper 11.0.2-alpha.0.12