Why is there a "new" requirement? IVertex2D only has read-only properties, so a constructor with parameters is necessary, whilst a parameterless constructor (the result of "new" requirement) is pointless, unless you do some hefty reflection tricks...