Передача параметров в конструктор C # - PullRequest
2 голосов
/ 02 сентября 2010

В настоящее время я перестраиваю свою программу, чтобы она была более объектно-ориентированной, и у меня возникают проблемы с конструкторами моих объектов.

Все объекты хранятся в базе данных, которая должна быть удобочитаемой для человека, поэтому я подумал, что было бы неплохо, чтобы программист передавал конструктор объекта таблицы или datarow напрямую, и объект получал бы значения сам. 1003 *

Итак, что я хотел сделать, это:

public TestObject(Data.MyDataTable table) {
 // Some checks if the table is valid
 TestObject(table[0]);
}

public TestObject(Data.MyDataRow row) {
 // Some checks if the row is valid
 TestObject(row.Name, row.Value);
}

public TestObject(String name, String value) {
 // Some checks if the strings are valid
 _name = name;
 _value = value;
}

Итак, как вы видите, мне нужна своего рода «цепочка конструктора», в которой, в зависимости от того, как программист вызывает ее, значения передаются и проверяются на каждом шаге. Я попробовал так, как написал, но это не сработало.

Error 'TestObject' is a 'type' but is used like a 'variable'

Я также пытался написать this.TestObject(...), но без изменений.

Error 'TestObject' does not contain a definition for 'TestObject' and
no extension method 'TestObject' accepting a first argument of type
'TestObject' could be found

Как я могу это сделать?

Ответы [ 2 ]

7 голосов
/ 02 сентября 2010

Вы конструкторы цепочек , например:

public TestObject(Data.MyDataTable table) : this(table[0])
{

}

public TestObject(Data.MyDataRow row) : this(row.Name, row.Value)
{

}

public TestObject(String name, String value) 
{
 // Some checks if the strings are valid
 _name = name;
 _value = value;
}

Примечание: использование ключевого слова this для обозначения текущего объекта, использование параметров, передаваемых одномуконструктор для цепного конструктора.

2 голосов
/ 02 сентября 2010

Конструкторская цепочка работает так:

public TestObject(Data.MyDataTable table) : this(table[0])
{

}

public TestObject(Data.MyDataRow row) : this(row.Name, row.Value)
{

}

public TestObject(String name, String value)
{
 // Some checks if the strings are valid
 _name = name;
 _value = value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...