Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 c# лямбда выражение в interface  [new]
Nechto
Member

Откуда:
Сообщений: 825
Здравствуйте
Как данный void описать в interface
public class A<T>, Ia
   where T : class
{
      public void ppp(Expression<Func<T, bool>> value)
      {
      }
}

public interface Ia
{
     void ppp( ??? );
}
3 сен 15, 12:55    [18103847]     Ответить | Цитировать Сообщить модератору
 Re: c# лямбда выражение в interface  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21983
а причем тут ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM?

public class A<T> : Ia<T>
   where T : class
{
      public void ppp(Expression<Func<T, bool>> value)
      {
      }
}

public interface Ia<T>
{
     void ppp(Expression<Func<T, bool>> value);
}
3 сен 15, 13:10    [18103967]     Ответить | Цитировать Сообщить модератору
 Re: c# лямбда выражение в interface  [new]
Nechto
Member

Откуда:
Сообщений: 825
Ошибся разделом.
public interface Ia<T>
{
     void ppp(Expression<Func<T, bool>> value);
}

Так я умею, а без Ia<T>, никак?
3 сен 15, 13:14    [18103993]     Ответить | Цитировать Сообщить модератору
 Re: c# лямбда выражение в interface  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21983
Лучше опиши саму проблему
3 сен 15, 13:15    [18104008]     Ответить | Цитировать Сообщить модератору
 Re: c# лямбда выражение в interface  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Nechto
Так я умею, а без Ia<T>, никак?

+
public class A<T> : Ia
   where T : class
{
      public void ppp<T>(Expression<Func<T, bool>> value)
      {
      }
}

public interface Ia
{
     void ppp<T>(Expression<Func<T, bool>> value);
}

И да - присоединяюсь к Shocker.Pro
3 сен 15, 13:27    [18104098]     Ответить | Цитировать Сообщить модератору
 Re: c# лямбда выражение в interface  [new]
Nechto
Member

Откуда:
Сообщений: 825
// MVVM класс
public abstract class EntityViewModel<TEntity>
   where TEntity : class, new()
{
      public void NewRow()
      {
      } 

      public void EditRow(Expression<Func<T, bool>> value)
      {
           
      }
}
public interface IBase
{
     void NewRow();
     void EditRow( ??? );
}


Далее множество моделей наследующие этот класс.
public class Aaa : EntityViewModel<EntityBook>, IBase
   where TEntity : class, new()
{
      public Aaa()
      {
      } 
}



Ну из команды можно будет управлять любой моделью, через интерфейс
viewModel.NewRow();
or
viewModel.EditRow(x => x.Id == 21) // к примеру по Id 21
3 сен 15, 13:33    [18104169]     Ответить | Цитировать Сообщить модератору
 Re: c# лямбда выражение в interface  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21983
так сделать просто два разных интерфейса для NewRow (необобщенный) и для EditRow (обобщенный)
3 сен 15, 13:38    [18104206]     Ответить | Цитировать Сообщить модератору
 Re: c# лямбда выражение в interface  [new]
Nechto
Member

Откуда:
Сообщений: 825
можете на примере показать?
3 сен 15, 13:42    [18104238]     Ответить | Цитировать Сообщить модератору
 Re: c# лямбда выражение в interface  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21983
В вашем сообщении какая-то каша с именами обобщенных типов? реализация не показана, может я не до конца понимаю?
Ну, допустим
public interface IBaseNew
{
     void NewRow();
}
public interface IBaseEdit<T>
{
     void EditRow(Expression<Func<T, bool>> value);
}

((IBaseNew)viewModel).NewRow();
((IBaseEdit<int>)viewModel).EditRow(x => x.Id == 21) // к примеру по Id 21
3 сен 15, 13:50    [18104283]     Ответить | Цитировать Сообщить модератору
 Re: c# лямбда выражение в interface  [new]
Nechto
Member

Откуда:
Сообщений: 825
Shocker.Pro
В вашем сообщении какая-то каша с именами обобщенных типов? реализация не показана, может я не до конца понимаю?
Ну, допустим
public interface IBaseNew
{
     void NewRow();
}
public interface IBaseEdit<T>
{
     void EditRow(Expression<Func<T, bool>> value);
}

((IBaseNew)viewModel).NewRow();
((IBaseEdit<int>)viewModel).EditRow(x => x.Id == 21) // к примеру по Id 21


Дело в том что я не знаю какая Entity у модели в public class Aaa : EntityViewModel<EntityBook>, IBase, я знаю только имя класса. Поэтому в IBaseEdit< сюда мне нечего поставить >. Похоже нужно пересматривать структуру
3 сен 15, 13:55    [18104309]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить