示例#1
0
 void IBuildPlan.Apply(IUnitSequenceMatcher unitSequenceMatcher)
 {
     unitSequenceMatcher
     .AddUniqueUnitMatcher(new LastUnitSequenceMatcher(UnitMatcher, Weight))
     .AddBuildAction(BuildStage.Create, BuildAction);
     Apply(unitSequenceMatcher);
 }
        public static T AddUniqueUnitMatcher <T>(this IUnitSequenceMatcher parent, T unitSequenceMatcher)
            where T : IUnitSequenceMatcher
        {
            if (parent.Children.Contains(unitSequenceMatcher))
            {
                throw new ArmatureException(string.Format("There is already matcher {0}", unitSequenceMatcher));
            }

            parent.Children.Add(unitSequenceMatcher);
            return(unitSequenceMatcher);
        }
        public static T AddOrGetUnitSequenceMatcher <T>(this IUnitSequenceMatcher parent, T unitSequenceMatcher)
            where T : IUnitSequenceMatcher
        {
            if (parent.Children.Contains(unitSequenceMatcher))
            {
                return((T)parent.Children.FirstOrDefault(_ => _.Equals(unitSequenceMatcher)));
            }

            parent.Children.Add(unitSequenceMatcher);
            return(unitSequenceMatcher);
        }
示例#4
0
文件: Log.cs 项目: Temp1ar/Armature
 private static void Print(IUnitSequenceMatcher unitSequenceMatcher)
 {
     try
     {
         foreach (var child in unitSequenceMatcher.Children)
         {
             using (Block(LogLevel.Info, child.ToString()))
             {
                 Print(child);
             }
         }
     }
     catch (Exception)
     {
         //ignore
     }
 }
 public void Apply(IUnitSequenceMatcher unitSequenceMatcher) =>
 unitSequenceMatcher
 .AddOrGetUnitSequenceMatcher(new LastUnitSequenceMatcher(PropertyMatcher.Instance))
 .AddBuildAction(BuildStage.Create, new GetPropertyByNameBuildAction(_names));
示例#6
0
文件: Tuner.cs 项目: Temp1ar/Armature
 public Tuner([NotNull] IUnitSequenceMatcher unitSequenceMatcher) : base(unitSequenceMatcher)
 {
 }
 public TreatingOpenGenericTuner([NotNull] IUnitSequenceMatcher unitSequenceMatcher) : base(unitSequenceMatcher)
 {
 }
 public override bool Equals(IUnitSequenceMatcher other) => Equals((object)other);
 public void Add([NotNull] IUnitSequenceMatcher unitSequenceMatcher) => Children.Add(unitSequenceMatcher);
示例#10
0
 /// <summary>
 ///   Can be overriden to add extra logic in addition to implemented in <see cref="IBuildPlan.Apply" />
 /// </summary>
 protected virtual void Apply(IUnitSequenceMatcher unitSequenceMatcher)
 {
 }
 protected UnitSequenceExtensibility([NotNull] IUnitSequenceMatcher unitSequenceMatcher) =>
示例#12
0
 public OpenGenericCreationTuner([NotNull] IUnitSequenceMatcher unitSequenceMatcher, Type openGenericType, [CanBeNull] object token) : base(unitSequenceMatcher)
 {
     OpenGenericType = openGenericType;
     Token           = token;
 }
示例#13
0
 public override bool Equals(IUnitSequenceMatcher other) => throw new NotSupportedException();
示例#14
0
 public bool Equals(IUnitSequenceMatcher other) => ReferenceEquals(this, other);
示例#15
0
 public CreationTuner([NotNull] IUnitSequenceMatcher unitSequenceMatcher, [NotNull] Type type, [CanBeNull] object token) : base(unitSequenceMatcher)
 {
     Type  = type ?? throw new ArgumentNullException(nameof(type));
     Token = token;
 }