依赖关系解析失败

Resolution of the dependency failed

我有以下代码:

CancellationPolicyService

using MyApp.Model.Models;
using Repository.Pattern.Repositories;
using Service.Pattern;

namespace MyApp.Service
{
    public interface ICancellationPolicyService :  IService<CancellationPolicy>
    {
    }

    public class CancellationPolicyService : Service<CancellationPolicy>, ICancellationPolicyService
    {
        public CancellationPolicyService(IRepositoryAsync<CancellationPolicy> repository)
        : base(repository)
        {
        }
    }
}

里面UnityConfig.cs:

.RegisterType<ICancellationPolicyService, CancellationPolicyService>()

在数据缓存服务中:

namespace MyApp.Service
{
    public class DataCacheService
    {
    private ICancellationPolicyService CancellationPolicyService
        {
            get { return _container.Resolve<ICancellationPolicyService>(); }
        }

        public DataCacheService(IUnityContainer container)
        {
            _container = container;

            MainCache = new MemoryCache("MainCache");

            GetCachedItem(CacheKeys.CancellationPolicies);
        }
    public object GetCachedItem(CacheKeys CacheKeyName)
        {
            lock (_lock)
            {
                if (!MainCache.Contains(CacheKeyName.ToString()))
                {
                    switch (CacheKeyName)
                    {
                        case CacheKeys.CancellationPolicies:
                            var cancellationpolicies = CancellationPolicyService.Queryable().ToList();
                            UpdateCache(CacheKeys.CancellationPolicies, cancellationpolicies);
                            break;
                        }
                };
                return MainCache[CacheKeyName.ToString()] as Object;
            }
        }
    }
}

当我调用 DataCacheService 时,我收到一条错误消息:

InvalidOperationException - The current type, Repository.Pattern.Repositories.IRepositoryAsync`1[MyApp.Model.Models.CancellationPolicy], is an interface and cannot be constructed. Are you missing a type mapping?

你知道为什么吗?如果有任何提示,我将不胜感激。

使用这个:

RegisterType<yourInterface>().As<yourClass>().AsSelf();

可能有用。

听起来你还没有注册IRepositoryAsync<CancellationPolicy>。将该注册也添加到您的统一注册中。

假设IRepositoryAsync<CancellationPolicy>的执行是CancellationPolicyRepository:

.RegisterType<IRepositoryAsync<CancellationPolicy>, CancellationPolicyRepository>()

如果你有一个通用存储库,也可以像这样。

.RegisterType<IRepositoryAsync<CancellationPolicy>, MyGenericRepository<CancellationPolicyRepository>>()