C# 统一的存储库模式

C# 统一的存储库模式,c#,wpf,unity3d,win-universal-app,C#,Wpf,Unity3d,Win Universal App,我对存储库模式非常陌生,因此想问问我当前的(简化的)模型是否正确,或者它是否需要额外的修改 背景: 我有一个通用的Windows平台应用程序,它有一个主窗口。这里我显示了客户的简单列表(仅显示姓名、姓氏和出生日期) 然后我有一个按钮,用户可以在其中编辑所选客户的属性(这将导航到一个新的DetailPage.xaml) 设置: 以下是我设置存储库类和接口的方式: public interface ICustomerRepository { void AddCustomer(Customer

我对存储库模式非常陌生,因此想问问我当前的(简化的)模型是否正确,或者它是否需要额外的修改

背景:

我有一个通用的Windows平台应用程序,它有一个主窗口。这里我显示了
客户的简单列表(仅显示姓名、姓氏和出生日期)

然后我有一个按钮,用户可以在其中编辑所选客户的属性(这将导航到一个新的DetailPage.xaml)

设置:

以下是我设置存储库类和接口的方式:

public interface ICustomerRepository
{
    void AddCustomer(Customer newCustomer);
    void RemoveCustomer(Customer item);
    List<Customer> GetCustomers();
    void LoadCustomers(string sFilePath);
}

///Class Definition
public class CustomerRepository : ICustomerRepository
{
    private List<Customer> _customers;

    public void AddCustomer(Customer newCustomer)
    {
        if(newCustomer!=null)
        {
            if (!_customers.Contains(newCustomer))
                _customers.Add(newCustomer);
        }
    }

    public CustomerRepository()
    {
        LoadCustomers("defaultPath");
    }

    public void RemoveCustomer(Customer item)
    {
        if (item != null)
            _customers.Remove(item);
    }

    public void LoadCustomers(string sPath)
    {
        //would load data from a file here
        _customers = new List<Customer>()
        {
            new Customer() {ID = 1, Name ="Janko", Surname= "Hrasko", DateOfBirth = DateTime.Now },
            new Customer() {ID = 2, Name ="Jozef", Surname= "Mrkvicka", DateOfBirth = DateTime.Now.AddDays(-10) },
            new Customer() {ID = 1, Name ="Jozko", Surname= "Stefanovic", DateOfBirth = DateTime.Now.AddDays(-50) }
        };
    }

    public List<Customer> GetCustomers()
    {
        if (_customers == null || _customers.Count == 0)
            LoadCustomers("defaultPath");

        return new List<Customer>(_customers);
    }
}
在my
MainWindowViewModel
中,我有一个集合(显示在页面上),如下所示:

    public ObservableCollection<Customer> col_customers
    {
        get
        {
            return new ObservableCollection<Customer>(_customerRepository.GetCustomers());
        }
    }
public observebleCollection客户
{
得到
{
返回新的ObservableCollection(_customerRepository.GetCustomers());
}
}
问题:


这是在我的应用程序中实现存储库的正确方法吗?

它适合您吗?你使用它有什么问题吗?试一下没有问题,一切正常。我问这个问题的原因是,我不确定我是否错过了任何关键的东西?很难回答你的问题。它将主要基于意见。因此,我建议您尝试这种实现,并注意实际问题。你会得到它们——问一个问题。你需要一些东西开始,这个代码比我看到的更好:)谢谢你的回答。您能告诉我,我可能会遇到什么问题吗?您可以从
ContainerControlled LifetimeManager
获取内存泄漏。阅读有关终身管理器的更多信息(尝试使用HierarhicalLifetimeManager)。
    public ObservableCollection<Customer> col_customers
    {
        get
        {
            return new ObservableCollection<Customer>(_customerRepository.GetCustomers());
        }
    }