using System; using System.Collections.Generic; namespace Moserware.Skills.FactorGraphs { public class VariableFactory { // using a Func to encourage fresh copies in case it's overwritten private readonly List> _CreatedVariables = new List>(); private readonly Func _VariablePriorInitializer; public VariableFactory(Func variablePriorInitializer) { _VariablePriorInitializer = variablePriorInitializer; } public Variable CreateBasicVariable(string nameFormat, params object[] args) { var newVar = new Variable( String.Format(nameFormat, args), this, _CreatedVariables.Count, _VariablePriorInitializer()); _CreatedVariables.Add(newVar); return newVar; } public KeyedVariable CreateKeyedVariable(TKey key, string nameFormat, params object[] args) { var newVar = new KeyedVariable( key, String.Format(nameFormat, args), this, _CreatedVariables.Count, _VariablePriorInitializer()); _CreatedVariables.Add(newVar); return newVar; } } }