1 |
william |
92 |
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 |
william |
110 |
[Serializable] |
10 |
william |
118 |
internal class PropertyList : PropertyList<string, object>, IPropertyList |
11 |
william |
92 |
{ |
12 |
william |
97 |
public PropertyList() :base() { } |
13 |
william |
105 |
public PropertyList(IEnumerable<IPropertyValuePair<string, object>> collection) : base(collection) { } |
14 |
william |
97 |
public PropertyList(int capacity) : base(capacity) { } |
15 |
|
|
} |
16 |
william |
110 |
[Serializable] |
17 |
william |
118 |
internal class PropertyList<TKey, TValue> : IPropertyList<TKey, TValue> |
18 |
william |
97 |
{ |
19 |
william |
105 |
private PropertyCollection<IPropertyValuePair<TKey, TValue>> properties; |
20 |
|
|
public PropertyList() { properties = new PropertyCollection<IPropertyValuePair<TKey, TValue>>(); } |
21 |
|
|
public PropertyList(IEnumerable<IPropertyValuePair<TKey, TValue>> collection) : this() { foreach (var p in collection) { properties.AddProperty(p); } } |
22 |
william |
98 |
public PropertyList(int capacity) |
23 |
|
|
{ |
24 |
william |
105 |
properties = new PropertyCollection<IPropertyValuePair<TKey, TValue>>(); |
25 |
william |
98 |
} |
26 |
william |
105 |
public IPropertyValuePair<TKey, TValue> this[int index] { get { return properties.ToList()[index]; } set { properties.ToList()[index] = value; } } |
27 |
|
|
public IEnumerable<IPropertyValuePair<TKey, TValue>> this[TKey name] |
28 |
william |
100 |
{ |
29 |
|
|
get |
30 |
|
|
{ |
31 |
|
|
var list = properties.ToList().FindAll(s => s.Name.Equals(name)); |
32 |
|
|
if (list == null) |
33 |
|
|
{ |
34 |
|
|
throw new NullReferenceException(string.Format("Could not find any properties named '{0}'", name)); |
35 |
|
|
} |
36 |
|
|
return list; |
37 |
|
|
} |
38 |
|
|
} |
39 |
william |
105 |
public int IndexOfProperty(IPropertyValuePair<TKey, TValue> item) { return properties.ToList().IndexOf(item); } |
40 |
|
|
public void InsertPropertyAtIndex(int index, IPropertyValuePair<TKey, TValue> item) { properties.ToList().Insert(index, item); } |
41 |
william |
98 |
public void RemovePropertyAt(int index) { properties.RemoveProperty(this[index]); } |
42 |
|
|
public int PropertyCount { get { return properties.PropertyCount; } } |
43 |
|
|
public bool IsReadOnly |
44 |
|
|
{ |
45 |
|
|
get |
46 |
|
|
{ |
47 |
william |
106 |
IPropertyCollection<IPropertyValuePair<TKey, TValue>> collection = (properties as IPropertyCollection<IPropertyValuePair<TKey, TValue>>); |
48 |
william |
98 |
if(collection == null) |
49 |
|
|
{ |
50 |
|
|
throw new InvalidCastException(string.Format("Unable to cast: '{0}' to '{1}'", properties.GetType().Name, typeof(IPropertyCollection<PropertyValuePair<TKey, TValue>>).Name)); |
51 |
|
|
} |
52 |
|
|
return collection.IsReadOnly; |
53 |
|
|
} |
54 |
|
|
} |
55 |
william |
105 |
public void AddProperty(IPropertyValuePair<TKey, TValue> item) { properties.AddProperty(item); } |
56 |
william |
98 |
public void ClearProperties() { properties.ClearProperties(); } |
57 |
william |
105 |
public bool ContainsProperty(IPropertyValuePair<TKey, TValue> item) { return properties.Contains(item); } |
58 |
|
|
public void CopyPropertiesTo(IPropertyValuePair<TKey, TValue>[] array, int arrayIndex) { properties.CopyPropertiesTo(array, arrayIndex); } |
59 |
|
|
public bool RemoveProperty(IPropertyValuePair<TKey, TValue> item) { return properties.RemoveProperty(item); } |
60 |
|
|
public IEnumerator<IPropertyValuePair<TKey, TValue>> GetEnumerator() { return properties.GetEnumerator(); } |
61 |
william |
95 |
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return this.GetEnumerator(); } |
62 |
william |
97 |
|
63 |
|
|
|
64 |
|
|
public bool ContainsProperty(TKey name, TValue value) { return ContainsProperty(new PropertyValuePair<TKey, TValue>(name, value)); } |
65 |
|
|
public void AddProperty(TKey name, TValue value) { AddProperty(new PropertyValuePair<TKey, TValue>(name, value)); } |
66 |
|
|
public void RemoveProperty(TKey name, TValue value) { RemoveProperty(new PropertyValuePair<TKey, TValue>(name, value)); } |
67 |
william |
106 |
|
68 |
|
|
public override string ToString() |
69 |
|
|
{ |
70 |
|
|
return string.Format("Property Count: {0}", PropertyCount); |
71 |
|
|
} |
72 |
william |
92 |
} |
73 |
|
|
} |