Ошибка при использовании интерфейса в качестве типа - PullRequest
0 голосов
/ 23 ноября 2010

Я запрашиваю таблицу с помощью запроса SQL (таблица определяется динамически). Все таблицы реализуют интерфейс ITableIsFile. Вот проблемный код.

            string sql = "Select * from " + file + " where userID = '" + currAgentTM.systemuserid.Value
            + "' and CallStatusID = null";
        var records = appelsDataContext.ExecuteQuery<ITableIsFile>(sql);

В последней строке я получаю следующую ошибку: Тип 'MRS_Admin.ITableIsFile' должен объявить конструктор по умолчанию (без параметров), чтобы его можно было создать во время отображения.

Из того, что я знаю (и проверил), невозможно реализовать конструктор в интерфейсе.

Спасибо за любую помощь, которую вы можете оказать, она очень ценится. Матье

Ответы [ 3 ]

2 голосов
/ 23 ноября 2010

http://msdn.microsoft.com/en-us/library/bb361109.aspx

TResult должен быть конкретным классом, для которого контекст данных может отображать возвращаемое значение.

2 голосов
/ 24 ноября 2010

Я думаю, что AS-CII означает, что вы должны создать базовый класс из интерфейса и использовать этот тип.Например, вместо:

interface ISomething { }

class SomethingOne : ISomething { }

class SomethingTwo : ISomething { }

try:

interface ISomething { }

class SomethingBase : ISomething { }

class SomethingOne : SomethingBase { }

class SomethingTwo : SomethingBase { }

Но обратите внимание на требования в разделе замечаний здесь http://msdn.microsoft.com/en-us/library/bb361109.aspx

1 голос
/ 23 ноября 2010

Вы должны использовать реализацию интерфейса с конструктором без параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...