public int HeaderSize { get { return sizeof(byte); } }
public byte[] Content {get; private set;}
public HeaderBase(byte[] bytes)
public class BiggerHeader : HeaderBase
public BiggerHeader(HeaderBase header) : base(header.Content)
public new int HeaderSize { get { return sizeof(byte) + sizeof(UInt32); } }
public static void Main()
byte[] bytes = new byte[]{0xFF};
HeaderBase b = new HeaderBase(bytes);
BiggerHeader d = new BiggerHeader(b);
BiggerHeader d2 = Get<BiggerHeader>();
Console.WriteLine(b.HeaderSize);
Console.WriteLine(d.HeaderSize);
Console.WriteLine(d2.HeaderSize);
public static T Get<T>() where T : HeaderBase
HeaderBase b = new HeaderBase(new byte[]{});
T instance = (T)Activator.CreateInstance(typeof(T), b);
Console.WriteLine(instance.HeaderSize);