A lista <T> substitui todos os itens dentro de um loop foreach até o último valor
Estou tentando criar um aplicativo do Windows no qual haja uma caixa de combinação e, durante o Load (), estou preenchendo essa caixa de combinação com todas as cadeias de conexão disponíveis no meu arquivo app.Config.
Aqui está o snippet app.Config:
<!-- Adding Multiple Servers in Connection String-->
<connectionStrings>
<add name="SQLConnect-1"
connectionString="Data Source=SAHIL; Initial Catalog=RecordComparisonTool; Integrated Security=SSPI"
providerName="System.Data.SqlCLient"/>
<add name="SQLConnect-2"
connectionString="Data Source=SAHIL; Initial Catalog=RecordComparisonTool; User Id=test; Password=12123; Integrated Security=SSPI"
providerName="System.Data.SqlCLient"/>
<add name="SQLConnect-3"
connectionString="Data Source=SAHIL; Initial Catalog=RecordComparisonTool; User Id=test; Password=32315; Integrated Security=True"
providerName="System.Data.SqlCLient"/>
</connectionStrings>
Eu criei uma classe CompareResult na qual estou tentando obter todos os valores do app.Config e exibindo-o na caixa de combinação.
namespace RecordComparisonTool_Win
{
public class ConnectionString
{
public string name { get; set; }
public string conString { get; set; }
public string provider { get; set; }
}
public class CompareResult
{
public List<ConnectionString> GetConnection()
{
List<ConnectionString> conStr = new List<ConnectionString>();
ConnectionString conn = new ConnectionString();
foreach (ConnectionStringSettings css in ConfigurationManager.ConnectionStrings)
{
if (!(css.Name == "LocalSqlServer" || css.Name == "LocalMySqlServer"))
{
conn.name = css.Name;
conn.conString = css.ConnectionString;
conn.provider = css.ProviderName;
conStr.Add(conn);
}
}
return conStr;
}
}
}
O problema é que quando estou tentando vinculá-lo à caixa de combinação, ele mostra três registros conforme o arquivo app.Config, mas todos os registros têm o mesmo valor que "SQLConnect-3". Não consigo encontrar o motivo pelo qual a Lista foi atualizada com "SQLConnect-3" para todos os registros. Por favor, ajude a corrigir o erro. Aqui está o trecho em que vinculo esta lista à ComboBox
protected void LoadConnection()
{
CompareResult compareResult = new CompareResult();
List<ConnectionString> connectionString = new List<ConnectionString>();
connectionString = compareResult.GetConnection();
cbTokenLeft.DataSource = connectionString;
cbTokenLeft.DisplayMember = "name";
cbTokenLeft.ValueMember = "conString";
}