Question:
How to implement an indexed property in c# ??Do you have an example implementation of an Indexer in c#?
Answer:
The syntax is like this: public T this[string index]So, if the name of a property is this[...], the compiler takes it for an indexer.
Here is an example
public class IndexList<T> : List<T> where T : INamedItem { public T this[string index] { get{ return this.FirstOrDefault<T>(o => o.Name == index); } set { if (string.IsNullOrEmpty(value.Name)) { value.Name = index; } this.Add(value); } } public bool ContainsKey(string key) { return this.Any<T>(o => o.Name == key); } public void Add(string key, T value) { if (string.IsNullOrEmpty(value.Name)) { value.Name = key; } this.Add(value); } private class ItemEqualityComparer<T> : IEqualityComparer<T> where T: INamedItem { public bool Equals(T x, T y) { return x.Name.Equals(y.Name); } public int GetHashCode(T obj) { return obj.Name.GetHashCode(); } } } public interface INamedItem { string Name { get; set; } }
No comments:
Post a Comment