/// <summary> /// Tries to construct a new plan that sets a field for a /// receiver of the type given. May fail if there are no /// applicable receivers. /// </summary> /// <param name="type"></param> /// <param name="plan"></param> /// <returns></returns> private void NewFieldSettingPlan(FieldInfo field, PlanManager planManager, bool forbidNull) { this.stats.Selected(FieldSettingTransformer.Get(field).ToString()); Type[] parameterTypes = new Type[2]; parameterTypes[0] = field.DeclaringType; parameterTypes[1] = field.FieldType; RandomPlansResult r; if (!RandomPlans(out r, parameterTypes, delegate(Plan p, int i) { if (i == 0 && p.transformer is PrimitiveValueTransformer) { return(false); } return(true); }, planManager.builderPlans, forbidNull, null)) { stats.CreatedNew(CreationResult.NoInputs); return; } Plan plan = new Plan(FieldSettingTransformer.Get(field), r.fplans, r.fparameterChoosers); planManager.AddMaybeExecutingIfNeeded(plan, this.stats); }
public static FieldSettingTransformer Get(FieldInfo field) { FieldSettingTransformer t; cachedTransformers.TryGetValue(field, out t); if (t == null) cachedTransformers[field] = t = new FieldSettingTransformer(field); return t; }
public override bool Equals(object obj) { FieldSettingTransformer f = obj as FieldSettingTransformer; if (f == null) { return(false); } return(this.ffield.Equals(f.ffield)); }
public static FieldSettingTransformer Get(FieldInfo field) { FieldSettingTransformer t; cachedTransformers.TryGetValue(field, out t); if (t == null) { cachedTransformers[field] = t = new FieldSettingTransformer(field); } return(t); }