для конструктора, потому что вы не можете определить конструктор в интерфейсе.
EDIT:
Я вижу, что вы пытаетесь сделать сейчас. Вы хотите создать новый экземпляр универсального типа, с которым определен ваш DBLayer. Ваша проблема заключается в том, что вы не можете указать, что ваши реализации интерфейса должны иметь определенный конструктор. Возможно, вам лучше иметь метод на вашем интерфейсе, который принимает DataRow и использует его для инициализации IDBObject, затем вы можете создать экземпляр типа DBObject и затем вызвать метод, который принимает DataRow, с помощью которого можно инициализировать ваш экземпляр.
Или вы могли бы потребовать, чтобы ваш класс DBLayer принял класс фабрики, который может создать объект типа DBObject с данным DataRow, и вы могли бы вызвать этот метод фабрики вместо вызова
For Each rowAs DataRow In Dataset.Tables(0).Rows
//DataList.Add(New DBObject(row))
DataList.Add(m_factory.CreateObject(row));
Next
РЕДАКТИРОВАТЬ 2:
самый простой подход - расширить интерфейс, чтобы вы могли установить DataRow и вызвать метод в цикле:
For Each row As DataRow In Dataset.Tables(0).Rows
//DataList.Add(New DBObject(row))
Dim newElement As IDBObject = CType(Activator.CreateInstance(GetType(DBObject)), IDBObject)
//you'll need to add this SetDataRow method the the IDBObject interface
newElement.SetDataRow(row)
DataList.Add(newElement)
Next