|
@@ -265,7 +265,7 @@ namespace InABox.Core
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public class Columns<T> : IColumns, IEnumerable<Column<T>>
|
|
|
+ public class Columns<T> : IColumns, ICollection<Column<T>>
|
|
|
{
|
|
|
#region Private Fields
|
|
|
|
|
@@ -279,8 +279,15 @@ namespace InABox.Core
|
|
|
|
|
|
public int Count => columns.Count;
|
|
|
|
|
|
+ bool ICollection<Column<T>>.IsReadOnly => false;
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
+ private Columns()
|
|
|
+ {
|
|
|
+ columns = new List<Column<T>>();
|
|
|
+ }
|
|
|
+
|
|
|
public Columns(ColumnTypeFlags flags)
|
|
|
{
|
|
|
columns = new List<Column<T>>();
|
|
@@ -315,7 +322,7 @@ namespace InABox.Core
|
|
|
{
|
|
|
var isLocal = !prop.HasParentEntityLink()
|
|
|
|| (prop.Parent?.HasParentEntityLink() != true && prop.Name.EndsWith(".ID"));
|
|
|
- if (flags.HasFlag(ColumnTypeFlags.Local) && !prop.IsCalculated)
|
|
|
+ if (flags.HasFlag(ColumnTypeFlags.Local) && isLocal && !prop.IsCalculated)
|
|
|
{
|
|
|
columns.Add(new Column<T>(prop));
|
|
|
}
|
|
@@ -585,7 +592,7 @@ namespace InABox.Core
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
- #region IEnumerable
|
|
|
+ #region ICollection
|
|
|
|
|
|
public IEnumerator<Column<T>> GetEnumerator()
|
|
|
{
|
|
@@ -599,6 +606,31 @@ namespace InABox.Core
|
|
|
return columns.GetEnumerator();
|
|
|
}
|
|
|
|
|
|
+ void ICollection<Column<T>>.Add(Column<T> item)
|
|
|
+ {
|
|
|
+ Add(item);
|
|
|
+ }
|
|
|
+
|
|
|
+ void ICollection<Column<T>>.Clear()
|
|
|
+ {
|
|
|
+ columns.Clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ bool ICollection<Column<T>>.Contains(Column<T> item)
|
|
|
+ {
|
|
|
+ return Contains(item.Property);
|
|
|
+ }
|
|
|
+
|
|
|
+ void ICollection<Column<T>>.CopyTo(Column<T>[] array, int arrayIndex)
|
|
|
+ {
|
|
|
+ columns.CopyTo(array, arrayIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ bool ICollection<Column<T>>.Remove(Column<T> item)
|
|
|
+ {
|
|
|
+ return columns.RemoveAll(x => x.Property == item.Property) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
}
|
|
|
|