Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: свойство с разными значениями Добавлено: 10.05.06 16:03  

Автор вопроса:  SHDZ | ICQ: 209382104 
Программа подключается к разным базам, хочу сделать один класс, который возвращал-бы объект Connaction.

Я хочу в одном классе сделать возврат свойства
myConn типом SqlConnection или OleDbConnection, в зависимости от того есть ли значение в свойстве Provider, по умолчанию ""

P.S. может туманно написал - тока начал разбираться в нет.
Подскажите....

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #1 Добавлено: 10.05.06 18:53
Если проще то скажу так:
подскажите в какую строну копать:
String WWW; Int qqq;
public String WWW
        {
            get
            {return this.www;}
            set
            {this.www = value;}
        }
public int WWW
        {
            get
            {return this.qq;}
            set
            {this.qq = value;}
        }
Это-то понятно что в одном классе не вмещается - а что можна сделать чтоб получилось в зависимости от значения какойто переменной вызывалось то одно свойство то другое, или подменялся тип или не придумаю что еще...

Ответить

Номер ответа: 2
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #2 Добавлено: 11.05.06 10:24
HELP
подсажите же, я уже тонны литературы перерыл, пишут что мол это возможно, но ни в одной книжке скачанной не нашел....................

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 11.05.06 14:41
public String WWW
        {
            get
            {return this.www;}
            set
            {this.www = value;}
        }
public int WWW
        {
            get
            {return this.qq;}
            set
            {this.qq = value;}
        }

Со свойствами такой вариант не пройдет.. Это можно сделать через метод. Читай про перегрузку методов через Overloads .. Это именно то,что тебе нужно. Этот оператор позволяет создавать ф-ю с одинаковыми именами, но с разными входными параметрами..

Ответить

Номер ответа: 4
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #4 Добавлено: 11.05.06 16:12
Типа метод с выходными параметрами?
А как сделать выборочную перегрузку - мол если условие = 1, то не перегружаем и возвращаем один тип, а если условие = 2, перегружаем и возвращаем параметр другого типа?

P.S. А через интерфейсы - в этом направлении можна чтото нарыть?

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 11.05.06 16:37
Насколько я тебя понял из твоих слов
который возвращал-бы объект Connaction.

Возвращаться всегда должен один объект, а теперь выясняется, что перегруженный метод будет возвращать объекты разных типов?
Ты уж сначала определись для себя,что ты вообще хочешь сделать.. И конкретней излогай задачу.. Какие данные и какого типа мы имеем на входе, и что мы должны получить на выходе? И что заусловие о котором ты говорил...
А иначе мы убъем кучу времени впустую...

Ответить

Номер ответа: 6
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #6 Добавлено: 11.05.06 16:40
угу, тока в одном случае ОЛЕДБ, а в другом СКЛ

Ответить

Номер ответа: 7
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #7 Добавлено: 11.05.06 16:42
Подробней - хотел сделать класс, который будет иметь свойство Connection, в зависимости от того что указано в свойстве Provider этого класса - если пусто - то SQLConnection, else OLEDBConnection

Ответить

Номер ответа: 8
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #8 Добавлено: 11.05.06 16:45
Зачем это все - у меня в процессе работы программа подключается на разные базы а то и сервера, вся логика переключений роли не играет, важно чтоб этот коннекшн был не тока скл а и оледб, да можно просто оледб взять, но т.к. я в НЕТ пытаюсь паралельно разобраться то и хотел сделать както универсально

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 11.05.06 18:58
Вся беда в том, что на выходе ты имеешь объекты разных типов, а значит надо привести их к общему знаменателю. Следовательно свойство Connection должно иметь тип Object. И где то в коде перед использованием Connection придется через CType приводить его к нужному виду соеденения.
Схематично это может выглядеть примерно так:
Imports System.Data.Sql
Imports System.Data.OleDb

Public Class Database

    Public Property Provider() As String
        Get
            '
        End Get
        Set(ByVal value As String)
            '
        End Set
    End Property

    Public ReadOnly Property ConnectionString() As String
        Get
            If MyClass.Provider = "OleDb" Then
                Return "OleDb ConnectionString"
            Else
                Return "Sql ConnectionString"
            End If
        End Get
    End Property

    Public ReadOnly Property Connection() As Object
        Get
            If MyClass.Provider = "OleDb" Then
                Return New OleDbConnection(MyClass.ConnectionString)
            Else
                Return New SqlClient.SqlConnection(MyClass.ConnectionString)
            End If
        End Get
    End Property

End Class

Ответить

Номер ответа: 10
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #10 Добавлено: 11.05.06 19:02
и еще.. (имхо) если бы можно было сделать универсальный класс, то MS не стала бы разделять их на OleDB & Sql..

Ответить

Номер ответа: 11
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #11 Добавлено: 11.05.06 19:47
мдя... логично
большое Спасиба, прояснилось

Ответить

Номер ответа: 12
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #12 Добавлено: 11.05.06 23:50
может чего здесь поможет
http://vbnet.ru/forum/show.aspx?id=96056

Ответить

Номер ответа: 13
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #13
Добавлено: 13.05.06 19:27
Паттерн "абстрактная фабрика" в помощь.

А свойство делать типа IDBConnection, а не Object.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам