refactoring

vnext
Paul Schneider 8 years ago
parent d785e5e826
commit f42b66383a
3 changed files with 34 additions and 2 deletions

@ -43,6 +43,8 @@
<Compile Include="Constants.cs" />
<Compile Include="Factories\ViewFactory.cs" />
<Compile Include="Helpers\DataManager.cs" />
<Compile Include="Helpers\ObservableString.cs" />
<Compile Include="Interfaces\ILocalEntity.cs" />
<Compile Include="Helpers\LocaLEntity.cs" />
<Compile Include="Helpers\NotIdentifiedException.cs" />
<Compile Include="Helpers\PageHelpers.cs" />

@ -1,19 +1,23 @@

using BookAStar.Interfaces;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
namespace BookAStar
{
public class LocalEntity<V, K> : ObservableCollection<V> where K : IEquatable<K>
public class LocalEntity<V, K> : ObservableCollection<V>, ILocalEntity<V, K> where K : IEquatable<K>
{
public V CurrentItem { get; protected set; }
protected Func<V, K> GetKey { get; set; }
public Func<V, K> GetKey { get; set; }
public LocalEntity(Func<V, K> getKey) : base()
{
if (getKey == null) throw new InvalidOperationException();
GetKey = getKey;
IList<V> l = this;
}
public virtual void Merge(V item)
{
var key = GetKey(item);
@ -29,6 +33,11 @@ namespace BookAStar
CurrentItem = this.Single(x => GetKey(x).Equals(key));
return CurrentItem;
}
public void Load()
{
this.Populate<V>();
}
}
}

@ -0,0 +1,21 @@
using System;
namespace BookAStar
{
public interface ILoadable
{
void Load();
}
public interface ILocalEntity<V, K> : ILoadable where K : IEquatable<K>
{
V CurrentItem { get; }
Func<V, K> GetKey { get; set; }
V LocalGet(K key);
void Merge(V item);
}
}
Loading…