main
 1using System;
 2
 3namespace solidware.financials.windows.ui.views.controls
 4{
 5    public interface IColumn
 6    {
 7        string Title { get; }
 8    }
 9
10    public class Column<T> : IEquatable<Column<T>>, IColumn
11    {
12        public string Title { get; private set; }
13
14        public Column(string title)
15        {
16            Title = title;
17        }
18
19        public override string ToString()
20        {
21            return Title;
22        }
23
24        static public implicit operator Column<T>(string title)
25        {
26            return new Column<T>(title);
27        }
28
29        static public implicit operator string(Column<T> column)
30        {
31            return column.Title;
32        }
33
34        public bool Equals(Column<T> other)
35        {
36            if (ReferenceEquals(null, other)) return false;
37            if (ReferenceEquals(this, other)) return true;
38            return Equals(other.Title, Title);
39        }
40
41        public override bool Equals(object obj)
42        {
43            if (ReferenceEquals(null, obj)) return false;
44            if (ReferenceEquals(this, obj)) return true;
45            if (obj.GetType() != typeof (Column<T>)) return false;
46            return Equals((Column<T>) obj);
47        }
48
49        public override int GetHashCode()
50        {
51            return (Title != null ? Title.GetHashCode() : 0);
52        }
53
54        static public bool operator ==(Column<T> left, Column<T> right)
55        {
56            return Equals(left, right);
57        }
58
59        static public bool operator !=(Column<T> left, Column<T> right)
60        {
61            return !Equals(left, right);
62        }
63    }
64}