public override void CreateTransactions() { // Console.WriteLine("===Start Plan.ConditionBasedPlan()==="); TransactionConfig.Description = Description; TransactionConfig.ExpectedResult = FindExpectedResult("Balance", this.Description.Split(',')[1]); TransactionConfig.SetConditionSet(""); // parameter is nothing ( because all of them are true) Transactions.Add(new Balance(TransactionConfig)); // =============================================================================== var transactionName = this.Description.Split(',')[0]; string objectToInstantiate = "TransactionTest." + transactionName; var objectType = Type.GetType(objectToInstantiate); var instantiatedObject = Activator.CreateInstance(objectType); // object Cloning var withdrawalTransactionConfig = TransactionConfig.DeepCopy <TransactionConfig>(TransactionConfig); withdrawalTransactionConfig.ExpectedResult = FindExpectedResult(transactionName, this.Description.Split(',')[1]); withdrawalTransactionConfig.SetConditionSet(this.Description.Split(',')[1]); objectType.InvokeMember("SetTransactionConfig", BindingFlags.InvokeMethod, null, instantiatedObject, new object[] { withdrawalTransactionConfig }); Transactions.Add((Transaction)instantiatedObject); // =============================================================================== Transactions.Add(new Balance(TransactionConfig)); // =============================================================================== }