1 |
using System; |
2 |
using System.Collections.Generic; |
3 |
using System.Linq; |
4 |
using System.Text; |
5 |
using libxmltv.Interfaces; |
6 |
|
7 |
namespace libxmltv.Core |
8 |
{ |
9 |
public class PropertyList : PropertyList<string, object>, IPropertyList |
10 |
{ |
11 |
public PropertyList() :base() { } |
12 |
public PropertyList(IEnumerable<PropertyValuePair<string, object>> collection) : base(collection) { } |
13 |
public PropertyList(int capacity) : base(capacity) { } |
14 |
} |
15 |
public class PropertyList<TKey, TValue> : IPropertyList<TKey, TValue> |
16 |
{ |
17 |
private PropertyCollection<PropertyValuePair<TKey, TValue>> properties; |
18 |
public PropertyList() { properties = new PropertyCollection<PropertyValuePair<TKey, TValue>>(); } |
19 |
public PropertyList(IEnumerable<PropertyValuePair<TKey, TValue>> collection) : this() { foreach (var p in collection) { properties.AddProperty(p); } } |
20 |
public PropertyList(int capacity) |
21 |
{ |
22 |
properties = new PropertyCollection<PropertyValuePair<TKey, TValue>>(); |
23 |
} |
24 |
public PropertyValuePair<TKey, TValue> this[int index] { get { return properties.ToList()[index]; } set { properties.ToList()[index] = value; } } |
25 |
public int IndexOfProperty(PropertyValuePair<TKey, TValue> item) { return properties.ToList().IndexOf(item); } |
26 |
public void InsertPropertyAtIndex(int index, PropertyValuePair<TKey, TValue> item) { properties.ToList().Insert(index, item); } |
27 |
public void RemovePropertyAt(int index) { properties.RemoveProperty(this[index]); } |
28 |
public int PropertyCount { get { return properties.PropertyCount; } } |
29 |
public bool IsReadOnly |
30 |
{ |
31 |
get |
32 |
{ |
33 |
IPropertyCollection<PropertyValuePair<TKey, TValue>> collection = (properties as IPropertyCollection<PropertyValuePair<TKey, TValue>>); |
34 |
if(collection == null) |
35 |
{ |
36 |
throw new InvalidCastException(string.Format("Unable to cast: '{0}' to '{1}'", properties.GetType().Name, typeof(IPropertyCollection<PropertyValuePair<TKey, TValue>>).Name)); |
37 |
} |
38 |
return collection.IsReadOnly; |
39 |
} |
40 |
} |
41 |
public void AddProperty(PropertyValuePair<TKey, TValue> item) { properties.AddProperty(item); } |
42 |
public void ClearProperties() { properties.ClearProperties(); } |
43 |
public bool ContainsProperty(PropertyValuePair<TKey, TValue> item) { return properties.Contains(item); } |
44 |
public void CopyPropertiesTo(PropertyValuePair<TKey, TValue>[] array, int arrayIndex) { properties.CopyPropertiesTo(array, arrayIndex); } |
45 |
public bool RemoveProperty(PropertyValuePair<TKey, TValue> item) { return properties.RemoveProperty(item); } |
46 |
public IEnumerator<PropertyValuePair<TKey, TValue>> GetEnumerator() { return properties.GetEnumerator(); } |
47 |
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return this.GetEnumerator(); } |
48 |
|
49 |
|
50 |
public bool ContainsProperty(TKey name, TValue value) { return ContainsProperty(new PropertyValuePair<TKey, TValue>(name, value)); } |
51 |
public void AddProperty(TKey name, TValue value) { AddProperty(new PropertyValuePair<TKey, TValue>(name, value)); } |
52 |
public void RemoveProperty(TKey name, TValue value) { RemoveProperty(new PropertyValuePair<TKey, TValue>(name, value)); } |
53 |
} |
54 |
} |