Microsoft Developer Network > 포럼 홈 > Visual C# General > Interface casting best practice question
질문하기질문하기
 

답변됨Interface casting best practice question

  • 2009년 11월 7일 토요일 오후 10:24Kéboo 사용자 메달사용자 메달사용자 메달사용자 메달사용자 메달
     
    I have implemented a class factory for classes representing rows from database tables. The class factory returns an interface to a class which could be either a SqlServer aware class, or an Oracle aware class,. Design pattern stuff. But I am not sure I did it right. Exemple with pseudo code:

    interface ICar
    {
       Load();
       Save();
       Delete();
    }

    class Car
    {
       Make
       Model
       Year
    }

    class SqlServer.Car : Car, ICar
    {
       // Do stuff with Sqlserver SQL
    }

    class Oracle.Car : Car, ICar
    {
       // Do stuff with Oracle SQL
    }

    Then in the code I use the interface object, and I dont know if the data came form SqlServer or Oracle. However, I need to get to the base class to get its properties and then there are several options:
    1. Add a getter to the interface classes for each properties (dont like this, to much work)
    2. Cast the interface to its associated type ( second variable required, dont want to use the "as", make code difficult to read)
    3. Add a getter called "Base" to the interface which returns "this" in the associated class (which is what the debugger is doing)

    Which approach would be best? Also should my "Car" class be abstract instead?

    Thanks 





답변

  • 2009년 11월 7일 토요일 오후 10:33andyfraser 사용자 메달사용자 메달사용자 메달사용자 메달사용자 메달
     답변됨
    Hi,

    Seems to me that you would want to abstract your database access and pass its interface into the constructor of your Car class.
    Search for the Dependancy Injection design pattern.

    HTH

    Andy

    www.sharpcontrols.net :: Free custom controls for .NET

모든 응답