コード例 #1
0
ファイル: LimitedFakeChain.cs プロジェクト: tchrikch/any
 public T Resolve(InstanceGenerator instanceGenerator, GenerationTrace trace)
 {
     try
     {
         _nestingLimit.AddNestingFor <T>(trace);
         if (!_nestingLimit.IsReachedFor <T>())
         {
             return(_fakeChain.Resolve(instanceGenerator, trace));
         }
         else
         {
             try
             {
                 trace.NestingLimitReachedTryingDummy();
                 return(instanceGenerator.Dummy <T>(trace)); //TODO
             }
             catch (TargetInvocationException e)
             {
                 return(default(T));
             }
             catch (MemberAccessException e)
             {
                 return(default(T));
             }
             catch (ArgumentException e)
             {
                 return(default(T));
             }
         }
     }
     finally
     {
         _nestingLimit.RemoveNestingFor <T>(trace);
     }
 }
コード例 #2
0
 public T Resolve(InstanceGenerator instanceGenerator)
 {
     try
     {
         _perTypeNestingLimit.AddNestingFor <T>();
         if (!_perTypeNestingLimit.IsReachedFor <T>())
         {
             return(_fakeChain.Resolve(instanceGenerator));
         }
         else
         {
             try
             {
                 return(instanceGenerator.Dummy <T>());
             }
             catch (TargetInvocationException e)
             {
                 return(default(T));
             }
             catch (MemberAccessException e)
             {
                 return(default(T));
             }
             catch (ArgumentException e)
             {
                 return(default(T));
             }
         }
     }
     finally
     {
         _perTypeNestingLimit.RemoveNestingFor <T>();
     }
 }
コード例 #3
0
 public T WithNextNestingLevel <T>(Func <T> limitNotReachedFunction,
                                   Func <T> limitReachedFunction)
 {
     try
     {
         NestingLimit.AddNestingFor <T>(Trace);
         if (!NestingLimit.IsReachedFor <T>())
         {
             return(limitNotReachedFunction.Invoke());
         }
         else
         {
             return(limitReachedFunction.Invoke());
         }
     }
     finally
     {
         NestingLimit.RemoveNestingFor <T>(Trace);
     }
 }