Я хочу определить 2 интерфейса для банка (IBank) и учетной записи (IAccount). Я не уверен, должен ли я поместить список IAccount
в интерфейс IBank
или свойство типа IBank
в IAccount
?
Моя основная сущность в соответствии с потребностями программного обеспечения — IAccount
, и я просто хочу IBank
найти дополнительную информацию о каждой учетной записи.
вот моя основная реализация:
public interface IBank
{
int BankId { get; }
string Name { get; }
string Description { get; }
string BranchCode { get; }
DateTime CreatedAt { get; }
DateTime ModifiedAt { get; }
List<IAccount> Accounts { get; }
}
public interface IAccount
{
int Id { get; set; }
string Name { get; set; }
DateTime Created { get; set; }
string AccountNumber { get; set; }
int BankId { get; set; }
decimal Value { get; }
}
Я не знаю. каков наилучший подход с учетом SOLID? Я хочу сначала использовать EF Code в будущем, поэтому я думаю, что нужно установить связь в интерфейсе. @Дай
Вам необходимо рассмотреть деловые отношения, которые должны представлять IBank и IAccount.
Итак, я предполагаю, что;
Итак, мы можем иметь следующее
public class BankAccount: IAccount
{
//other properties
public IBank AssociatedBank {get; set;}
}
public class Bank: IBank
{
//other properties
public List<IAccount> BankAccounts { get; set; } = new List<BankAccount>();
}
Таким образом, у нас есть деловые отношения, которые мы хотим представлять. Каждый BankAccount
имеет тип IAccount
и связан с одним AssociatedBank
, который имеет тип IBank
.
Каждый банк имеет тип IBank
и имеет 0,1 или более BankAccounts
типа IAccount
.
Что вам нужно учитывать, так это то, что вам действительно нужно ассоциировать их в обоих направлениях? Из того, что вы описали, возможно, вам не нужно иметь ссылку из банков на счета, а достаточно «односторонней» ссылки из BankAccount в банк.
Ваша модель данных должна отражать только то, что действительно необходимо в вашей системе, все остальное является чрезмерным. Заманчиво сделать больше, но очень важно придерживаться спецификации.
Редактировать:
Если это так, то вы можете удалить public List<IAccount> BankAccounts { get; set; } ...
из своего класса банка.
Привет, Джейсон. Должен ли я удалить `List<IAccount> Accounts {get; }` из интерфейса IBank
, а также удалить int BankId { get; set; }
из интерфейса IAccount
? (и поместить только необходимые отношения в определение класса?) @jason.kaisersmith
@HabilHarati Да. Я обновил ответ соответственно.
Что заставляет вас думать, что вы необходимость выражаете эту связь с помощью свойств экземпляра? А зачем использовать интерфейсы?