2010-02-12 2 views
0

Во-первых, я хочу извиниться за свой английский, а не за мою самую сильную сторону.Интерфейсы SubSonic, SimpleRepository и entity

На вопрос. В моем текущем проекте у меня есть интерфейсы с моими объектами, поэтому я могу использовать атрибуты Subsonic у меня в голове, и я хочу, чтобы в будущем можно было легко переключать O/R mapper. В любом случае, я получаю сообщение об ошибке при попытке использовать мои интерфейсы и классы SimpleRepositorys, такие как Single <>, All <> и так далее. Я знаю, почему я получаю сообщение об ошибке, но мне нужна помощь, чтобы найти способ обойти его. Сообщение об ошибке:

System.InvalidCastException: Невозможно привести объект типа 'SubSonic.DomainObjects.User' к типу 'Core.DomainObjects.IUser'.

Код:
public IUser FindById(int id) {
var user = _repository.Single<User>(x => x.Id == id);
return (IUser)user;
}

Как вы можете видеть, что я пытался сделать, чтобы пользователь IUser для того, чтобы работать, когда я хочу добавить данные, но без успеха. Что я могу сделать, чтобы сделать эту работу?

Спасибо,
Timmie

ответ

0

Я не думаю, что дозвуковой проблема в этой ситуации. Этот код будет работать:

namespace Core.Objects 
{ 
    public interface ICustomer 
    { 
     int CustomerID { get; set; } 
     string Name { get; set; } 
    } 

} 

код для фактического класса:

namespace Business.Entities 
{ 
     public class Customer: Core.Objects.ICustomer 
     { 
      public int CustomerID { get; set; } 

      [SubSonicStringLength(50)] 
      public string Name { get; set; } 
     } 
} 

И, наконец, функция, чтобы получить клиента:

private static ICustomer CustomerByID(int id) 
{ 
     var repos = new SimpleRepository("Test", SimpleRepositoryOptions.None); 
     var customer = repos.Single<Customer>(c => c.CustomerID == id); 

     return (ICustomer) customer; 
} 
+0

досадных, забыл включить интерфейс. –

Смежные вопросы