Интерфейс C # Различные типы переменных в методах репозитория - PullRequest
0 голосов
/ 30 мая 2018

Я хотел бы реализовать интерфейс и шаблон хранилища.Мои разные репозитории могут иметь типы данных типа:

Первый - (String-int, char-long)

Второй - (Char-double, double-string).Шаблон продолжает работать, у нас есть около 50 различных методов. Мы меняем наш интерфейс / репозитории на другую систему баз данных и т. Д.

Как мне отредактировать редактирование интерфейса ниже, чтобы разрешить разные типы данных?Спасибо,

public interface ITransactionRepository
{
    void SearchTransactionbyCategoryCustomerId(Category, CustomerId ); // what should I write here?
    void SearchTransactionbyProductDepartment(Product, Department); 
    ......
}


public class TransactionRepository1: IRepository
{
    void SearchTransactionbyCategoryCustomerId(string Category, int CustomerId);
    void SearchTransactionbyProductDepartment(char Product, long Department); 
    ......
}

public class TransactionRepository2: IRepository
{
    void SearchTransactionbyCategoryCustomerId(char Category, double CustomerId);
    void SearchTransactionbyProductDepartment(double Product, string Department); 
    ......
}

1 Ответ

0 голосов
/ 30 мая 2018

Определите ваш интерфейс как общий и укажите фактические типы в реализации,

public interface ITransactionRepository<TCategory, TCustomerId, TProduct, TDepartment>
{
    void SearchTransactionbyCategoryCustomerId(TCategory Category, TCustomerId CustomerId );
    void SearchTransactionbyProductDepartment(TProduct Product, TDepartment Department); 
    ......
}


public class TransactionRepository1: ITransactionRepository<string, int, char, long>
{
    void SearchTransactionbyCategoryCustomerId(string Category, int CustomerId);
    void SearchTransactionbyProductDepartment(char Product, long Department); 
    ......
}

public class TransactionRepository2: ITransactionRepository<char, double, double, string>
{
    void SearchTransactionbyCategoryCustomerId(char Category, double CustomerId);
    void SearchTransactionbyProductDepartment(double Product, string Department); 
    ......
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...