获取与 MS Unity 的接口类型

Get type of Interface with MS Unity

我有以下 class,其中包含获取与接口关联的类型的逻辑:

public class Token
{
    public IJwtClaimSet JwtClaims { get; private set; }

    public Token(EmployeeAuthToken token)
    {
      IUnityContainer container = UnityCommon.GetContainer();
      IJwtClaimSet jwtClaims = container.Resolve<IJwtClaimSet>();

      JwtClaims = TokenBuilder.ClaimSet(jwt, jwtClaims.GetType());
    }
}

我的问题: 有没有办法在不创建变量的情况下从 Unity 获取已解析的类型?

您可以检索注册信息:

https://msdn.microsoft.com/en-us/library/ff660863(v=pandp.20).aspx

var destinationType = container.Registrations
    .Where(r => r.RegisteredType == typeof(IJwtClaimSet))
    .Select(r => r.MappedToType)
    .FirstOrDefault();

但它可能不起作用(实例注入,......)所以最安全的方法是解决它或者你可以注册另一个包含信息类型的对象。