public object ResolveInject(Context context, ComponentDescriptor componentDescriptor, InjectDescriptor injectDescriptor)
{
ComponentDescriptor injectComponent = null;
if (injectDescriptor.Attributes.Name != null)
{
context.descriptorNameCache.TryGetValue(injectDescriptor.Attributes.Name, out injectComponent);
}
if (injectDescriptor.Attributes.Type != null)
{
if (injectComponent == null)
{
context.descriptorTypeCache.TryGetValue(injectDescriptor.Attributes.Type.AssemblyQualifiedName, out injectComponent);
}
else
{
if (injectComponent.Type != injectDescriptor.Attributes.Type)
{
injectComponent = null;
}
}
}
else
{
context.descriptorTypeCache.TryGetValue(injectDescriptor.Type.AssemblyQualifiedName, out injectComponent);
}
return injectComponent == null ? null : context.GetInstance(injectComponent);
}