[System.AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class GrandpaAttribute : Attribute
public GrandpaAttribute(string texto)
public string First {get;set;}
public class ParentAttribute : GrandpaAttribute
public string Name { get; private set; }
public ParentAttribute(string texto, string name) : base(texto)
public class ChildAttribute : ParentAttribute
public int Number { get; private set; }
public ChildAttribute(string texto, string name, int number)
[Child("The Beast",@"\m/", 666)]
public string Description { get; set; }
public DateTime SomeDate { get; set; }
public static void Main()
string[] one = new string[] { "XXXXX-X-XXX", "YYYYY-Y-YYY" };
string[] two = new string[] { "1", "2", "3", "4", "5" };
three = new string[one.Length * two.Length];
for (int i = 0; i < one.Length; i++)
for (int j = 0; j < two.Length; j++)
three[idx] = one[i] + "-" + two[j];