У меня проблемы с настройкой интерфейсов. Пролистав подобные вопросы здесь, я пришел к следующему интерфейсу для определения операций CRUD, необходимых для всех моих классов:
public interface IData<T>
{
IData<T> Select(int id);
List<T> SelectMultiple();
void Insert();
void Update();
void Delete();
}
Это затем реализуется в моих частичных классах:
public partial class Post : IData<Post>
{
public IData<Post> Select(int id)
{
MyDataContext dc = MyDataContext.Create();
return dc.Posts.Single(p => p.PostID == id);
}
public List<Post> SelectMultiple()
{
MyDataContext dc = MyDataContext.Create();
return dc.Posts.ToList();
}
// Update() and Delete() declarations
}
Все это прекрасно компилируется, однако, если я пытаюсь использовать метод Post Select ():
Post p = new Post().Select(1);
Ошибка при Не удается неявно преобразовать тип 'IData' в 'Post'. Существует явное преобразование (вам не хватает приведения?)
Что имеет смысл, но как мне его получить, чтобы оно не требовало каста? Я хочу, чтобы Select возвращал сообщение (но не определял сообщение как тип возврата на уровне интерфейса). Я неправильно понял интерфейсы, или я могу сделать быстрое изменение?