本文整理汇总了C#中Zenject.InjectContext.ChangeMemberType方法的典型用法代码示例。如果您正苦于以下问题:C# InjectContext.ChangeMemberType方法的具体用法?C# InjectContext.ChangeMemberType怎么用?C# InjectContext.ChangeMemberType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zenject.InjectContext
的用法示例。
在下文中一共展示了InjectContext.ChangeMemberType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ValidateContract
public static IEnumerable<ZenjectResolveException> ValidateContract(DiContainer container, InjectContext context)
{
var matches = container.GetProviderMatches(context);
if (matches.Count == 1)
{
foreach (var error in matches.Single().ValidateBinding(context))
{
yield return error;
}
}
else
{
if (ReflectionUtil.IsGenericList(context.MemberType))
{
var subContext = context.ChangeMemberType(context.MemberType.GetGenericArguments().Single());
matches = container.GetProviderMatches(subContext);
if (matches.IsEmpty())
{
if (!context.Optional)
{
if (container.FallbackProvider != null)
{
foreach (var error in container.FallbackProvider.ValidateBinding(context))
{
yield return error;
}
}
else
{
yield return new ZenjectResolveException(
"Could not find dependency with type 'List<{0}>'{1}. If the empty list is also valid, you can allow this by using the [InjectOptional] attribute.' \nObject graph:\n{2}"
.Fmt(
subContext.MemberType.Name(),
(context.ObjectType == null ? "" : " when injecting into '{0}'".Fmt(context.ObjectType.Name())),
context.GetObjectGraphString()));
}
}
}
else
{
foreach (var match in matches)
{
foreach (var error in match.ValidateBinding(context))
{
yield return error;
}
}
}
}
else
{
if (!context.Optional)
{
if (matches.IsEmpty())
{
if (container.FallbackProvider != null)
{
foreach (var error in container.FallbackProvider.ValidateBinding(context))
{
yield return error;
}
}
else
{
yield return new ZenjectResolveException(
"Could not find required dependency with type '{0}'{1} \nObject graph:\n{2}"
.Fmt(
context.MemberType.Name(),
(context.ObjectType == null ? "" : " when injecting into '{0}'".Fmt(context.ObjectType.Name())),
context.GetObjectGraphString()));
}
}
else
{
yield return new ZenjectResolveException(
"Found multiple matches when only one was expected for dependency with type '{0}'{1} \nObject graph:\n{2}"
.Fmt(
context.MemberType.Name(),
(context.ObjectType == null ? "" : " when injecting into '{0}'".Fmt(context.ObjectType.Name())),
context.GetObjectGraphString()));
}
}
}
}
}