public class Generic { private T[,] container = new T[1,1]; public T this [int row, int col] { get { return container[row, col]; } set { container[row, col] = value; } } } public struct Fault { public static void Main () { Generic gen = new Generic (); gen[0, 0] = new Fault (); System.Console.WriteLine (gen[0, 0].ToString ()); } public override string ToString () { return "Hi!"; } }