[ darmar_pr @ 27.12.2009. 15:45 ] @
Evo ovako,
hteo bih da koristim jednu promenljivu (recimo conn) koja će u zavisnosti od izabranog tipa Sql Servera biti SqlConnection ili SqlCEConnection. Slično sam nekada u VB.NET rešavao tipovima Variant ili Object. U C# to mi ne prolazi. Evo jednostavnog dela koda:


Object conn=null;
if(serverType==enumServerType.DataBaseEngine)
{
conn = (SqlCeConnection)Activator.CreateInstance(typeof(SqlConnection));
}
if(serverType==enumServerType.SqlServerCompactEdition)
{
conn = (SqlCeConnection)Activator.CreateInstance(typeof(SqlCeConnection));

}
conn.ConnectionString = GetConnectionString();
.....
Poslednja naredna pravi problem. Krod prevođenja javlja: 'object' does not contain a definition for 'ConnectionString'.
Jasno mi je gde je i zašto greška ali ne znam kako da je rešim.

[ mmix @ 27.12.2009. 15:58 ] @
deklarisi conn kao DbConnection jer je on parent oba objekta i eksponira ConnectionString koji koristis.

C# ne dozvoljava takav deklaracioni polimorfizam kroz late-binding (niti je taj kod optimalan), ako hoces polimorfizam moras da koristis ili nasledni polimorfizam ili da branchujes kod i koristis casting.

I btw, mislim da ti kod i inace ne valja jer castujes SqlConnection u SqlCeConnection sto nema sanse da prodje bez runtime greske.
[ darmar_pr @ 27.12.2009. 16:16 ] @
Citat:
mmix
I btw, mislim da ti kod i inace ne valja jer castujes SqlConnection u SqlCeConnection sto nema sanse da prodje bez runtime greske.


Ma to sam ja pogresio kod Copy/Paste.
I hvala na odgovoru.



[Ovu poruku je menjao darmar_pr dana 27.12.2009. u 17:31 GMT+1]