Nu har jag kommit så pass långt att det ploppar ut lite kod, men en viss person nämnde att det kan vara bra att använda sig av interfaces istället för att gå direkt på typ OleDbCommand, som jag gjort nu, använder man istället IDbCommand. Jag har lite bekymmer med implementeringen av detta. Jag tänkte göra om en funktion som returnerar ett DataSet och som hittils har sett ut på följande sätt
Så långt är allt väl, men när/hur ska jag ta reda på vilken typ det faktiskt är som ska hanteras? Är det tänkt att man ska göra någon slags switch(typeof(objCmd)) eller liknande?
Fördelen med att skicka ett interface istället för en konkret klass är att du inte behöver veta vad det är som kommer in till klassen, det ända du behöver veta är vilket interface som du skall jobba mot.
Vet inte riktigt hur resten av koden ser ut, men kommer det inte att räcka med de metoderna och properties som finns i IDBCommand?
Om det inte räcker så tappar du en del av nyttan med Interfaces, iofs så skadar det aldrig att jobba mot interfaces så det är ju inte fel att göra det. ;)
Om du vill typecasta så tycker jag inte där är något fel på den koden som du hade med i första posten..
Jag blev fundersam när jag kollade på dom olika deriverade klasserna från dessa (data)interfaces. Det skiljer sig en del mellan olika providers, men inte så mycket. Tanken är att jag ska jobba med Interface, eftersom det verkar mest praktiskt.
Hittade en intressant artikel om interfaces. Kanske inte hjälper så mycket men jag tyckte den var så pass intressant så att jag ville dela med mig av den..
Intressant läsning, men inte särskilt hjälpsam för mig ivarjefall ;)
Mitt problem, som jag än inte kommit på något vettigt att att lösa, är t.ex. följande lilla funktion som denna
public static DataTable ExecuteDataTable(IDbConnection objConn, CommandType eCmdType, string strSQL)
Den funktionen måste för eller senare skapa en DataAdapter och (som jag gjort) ett Command. Hur borde jag lösa problemet vad gäller vilken typ argumentet objConn är, eftersom det styr vilken typ av adapter och kommando som funktionen behöver skapa. Som jag ser det så finns det tre uppenbara sätt att lösa detta på:
1. Overload.
public static DataTable ExecuteDataTable(SqlConnection objConn, CommandType eCmdType, string strSQL)
public static DataTable ExecuteDataTable(OleDbConnection objConn, CommandType eCmdType, string strSQL)
public static DataTable ExecuteDataTable(OdbcConnection objConn, CommandType eCmdType, string strSQL)
[blue]//-- och så vidare...[/blue]
2. I den första funktionen kollar jag vilken typ (typeof(objConnection) ?) det är och deklarerar vidare efter den kollen.
3. Ett smartare sätt... ;)
Vilken lösning är att föredra?
265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e