我有以下称为 IAccountService 的接口(interface)。我也有完全相同的 Product 和 Package 等接口(interface)。
public interface IAccountService
{
void AddOrUpdate(Account account);
void Delete(Account account);
bool DoesTableExist();
Account Get(Account account);
Account Get(string pk, string rk);
IEnumerable<Account> Get();
IEnumerable<Account> Get(string pk);
string GetOptions(string pk, string rk);
IEnumerable<AccountDetail> ShowDetails(ref string runTime);
IEnumerable<AccountSummary> ShowSummary(ref string runTime);
void ValidateNoDuplicate(Account account);
void ValidateNoProducts(Account account);
}
我创建了一些通用方法,但我想知道我是否也可以创建一个通用接口(interface)。如果是这样,那么我将如何调用它以及如何更改上述内容以使其通用。目前我使用这个接口(interface)如下:
public class AccountService : BaseService, IAccountService
更新 1
感谢所有建议。我仍然有问题的一件事是 AccountDetail 和 AccountSummary 类。我在想也许这些应该是子类。但是我该如何处理这些命名呢?我将不得不采用类名,附加详细信息,然后在界面中使用它。这可能吗?
更新 2
下面是详细类和摘要类的示例:
public class AccountDetail
{
public string Title { get; set; }
public string Product { get; set; }
}
public class AccountSummary
{
public string Title { get; set; }
public Int32? ProductCount { get; set; }
public string PartitionKey{ get; set; }
public string RowKey { get; set; }
public DateTime? Modified { get; set; }
public string ModifiedBy { get; set; }
}
以上类用于报告。我认为它们可能不应该是模型存储库的一部分。也许他们应该在另一个地方。
关于裁判评论。 ref 在那里是因为在我的 Controller 中我调用了以下方法:
_account.ShowDetails(ref runTime);
ShowDetails 的输出是一个详细信息列表,runTime 引用随运行报告所需的时间更新。
最佳答案
你总是可以这样做:
public interface IService<T>
{
bool TableExists { get };
void AddOrUpdate(T item);
void Delete(T item);
T Get(T item);
T Get(string pk, string rk);
// etc
}
public class AccountService : BaseService, IService<Account>
对于 Detail/Summary 方法,我会将它们分解到一个单独的位置(可能是某种映射器类)。
关于c# - 我可以创建一个通用接口(interface)吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8576816/