>>>>>Hi,
>>>>>
>>>>>I am working on a case of replacing what the gurus call "programming to class" with "programming to interface" for the following code:
>>>>>
>>>>>First, the code the way it works currently (not with interface)
>>>>>
>>>>>OleDbCommand oCommand = new OleDbCommand();
>>>>>// connectionString is valid string (not shown here)
>>>>>OleDbConnection oConnection = new OleDbConnection(connectionString);
>>>>>oConnection.Open();
>>>>>oCommand.CommandText = "SP_MyProc";
>>>>>oCommand.CommandType = CommandType.StoredProcedure;
>>>>>oCommand.Parameters.AddWithValue( "@par1", cPar1 );
>>>>>
>>>>>
>>>>>The following is my replacement code (simplified):
>>>>>
>>>>>IDbCommand oCommand;
>>>>>idbCommand = new OleDbCommand();
>>>>>// connectionString is valid string (not shown here)
>>>>>OleDbConnection oConnection = new OleDbConnection(connectionString);
>>>>>oConnection.Open();
>>>>>oCommand.CommandText = "SP_MyProc";
>>>>>oCommand.CommandType = CommandType.StoredProcedure;
>>>>>oCommand.Parameters.AddWithValue( "@par1", cPar1 );
>>>>>
>>>>>
>>>>>The problem is that in the lower case code the method .AddWithValue has an error:
>>>>>
>>>>>'System.Data.IDataParameterCollection' does not contain definition for 'AddWithValue'
>>>>>
>>>>>
>>>>>What am I missing? TIA.
>>>>
>>>>I suggest to not use AddWithValue method in any of your new code. Use more verbose, but correct Parameters.Add method where you can specify parameter's type. AddWithValue method has problems and it's even being deprecated.
>>>
>>>But I read in MSDN help that the method Add is deprecated and AddViewValue replaced it.
>>>
>>>
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue(v=vs.90).aspx>>
>>No, only one particular implementation of the Add method is deprecated (one overload). Use the correct overload.
>
>I will try. Thank you.
>
>But my question was/is still, why the "interface"-based code didn't work but the class-based code does. I am trying to understand these concepts better.
Interface can have fewer methods defined than the actual class implementation based on that interface. Nothing surprising is here.
If it's not broken, fix it until it is.
My Blog