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 Func _VariablePriorInitializer; public VariableFactory(Func variablePriorInitializer) { _VariablePriorInitializer = variablePriorInitializer; } public Variable CreateBasicVariable(string nameFormat, params object[] args) { var newVar = new Variable( String.Format(nameFormat, args), _VariablePriorInitializer()); return newVar; } public KeyedVariable CreateKeyedVariable(TKey key, string nameFormat, params object[] args) { var newVar = new KeyedVariable( key, String.Format(nameFormat, args), _VariablePriorInitializer()); return newVar; } } }