System.ArgumentException:找不到与数据匹配的成员-Unity IOC

问题描述 投票:1回答:1

在行执行时,我的应用程序出现异常

public static void Initialize(Context applicationContext, IUnityContainer diContainer)
{
    diContainer.RegisterType<IAndroidGlobals, AndroidGlobals>(new ContainerControlledLifetimeManager(), new InjectionConstructor(applicationContext));
}

这是AndroidGlobls类

public class AndroidGlobals : IAndroidGlobals
{

    public string ApplicationVersion(string appName)
    {
        return  ApplicationContext.PackageManager.GetPackageInfo(appName, 0).VersionName;
    }
    public Android.Content.Context ApplicationContext
    {
        get { return _applicationContext; }
    }

    private readonly Context _applicationContext;

    public AndroidGlobals(Context applicationContext)
    {
        _applicationContext = applicationContext;
    }
}

以下是例外。我该如何解决这个问题

{System.InvalidOperationException:尚无成员匹配数据找到了。错误:RegisterType(生命周期:PerContainer,Invoke.Constructor(dispatch.droid.mainactivity@77cb316))--->System.ArgumentException:找不到与成员匹配的数据。在Unity.Injection.InjectionConstructor.SelectMember(System.Type类型,Unity.Injection.InjectionMember _)[0x0003c]在C:\ projects \ abstractions \ src \ Dependency \ Injection \ Members \ InjectionConstructor.cs:48在Unity.Injection.InjectionMember`2 [TMemberInfo,TData] .AddPolicies [TContext,TPolicySet](System.Type已注册类型,System.Type映射到类型,System.String名称,TPolicySet和策略)[0x00023]在C:\ projects \ abstractions \ src \ Dependency \ Injection \ Abstracts \ InjectionMember.cs:133在Unity.UnityContainer.Unity.IUnityContainer.RegisterType(System.Type typeFrom,System.Type typeTo,System.String名称,Unity.Lifetime.ITypeLifetimeManager durationManager,Unity.Injection.InjectionMember [] injectionMembers)[0x00144]在C:\ projects \ container \ src \ UnityContainer.IUnityContainer.cs:66 ---内部异常堆栈跟踪的结尾---Unity.UnityContainer.Unity.IUnityContainer.RegisterType(System.TypetypeFrom,System.Type typeTo,System.String名称,Unity.Lifetime.ITypeLifetimeManager durationManager,Unity.Injection.InjectionMember [] injectionMembers)[0x002de]在C:\ projects \ container \ src \ UnityContainer.IUnityContainer.cs:97 atUnity.UnityContainerExtensions.RegisterType [TFrom,TTo](Unity.IUnityContainer容器,Unity.Lifetime.ITypeLifetimeManagerlifetimeManager,Unity.Injection.InjectionMember [] injectionMembers)[0x00000]在C:\ projects \ abstractions \ src \ Extensions \ Container \ UnityContainer.cs:132在Ex.Express.Mobile.Core.Shared.Initializer.Initialize(Android.Content.Context applicationContext,Unity.IUnityContainerdiContainer)[0x00012] inD:\ ExNew \ SmartPad \ DEV \ Ex.Express.Mobile \ SmartPad \ Components \ Core \ Core.Shared \ Initializer.cs:72在Ex.Express.Mobile.Core.Droid.Initializer.Initialize(Android.Content.Context applicationContext,Unity.IUnityContainerdiContainer)[0x00001]在D:\ ExNew \ SmartPad \ DEV \ Ex.Express.Mobile \ SmartPad \ Components \ Core \ Core.Droid \ Initializer.cs:22在Ex.Express.Mobile.Apps.DispatchApp.Droid.MainActivity.OnCreate中(Android.OS.Bundle捆绑包)[0x00034]在D:\ ExNew \ SmartPad \ DEV \ Ex.Express.Mobile \ SmartPad \ Apps \ Messages \ DispatchApp.Droid \ MainActivity.cs:121}

我在链接器中使用Sdk and User Assembly。我该如何解决这个问题?

c# .net xamarin mvvm unity-container
1个回答
0
投票

已通过在所有使用的类的顶部使用属性[Android.Runtime.Preserve(AllMembers = true)]解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.