If you want to be able to do anything other than create a new object just from the code in the constructor, don't use a constructor in the first place.
Do you really need an Instance constructor taking an int? Why not turn it into a static factory method:
public static Instance CreateInstance(int id)
{
MyTemplate def = new MyTemplate();
return def.GetInstance(id);
}
Static methods have various advantages over constructors - although some disadvantages too. (There's a separate SO question on that - worth a look.)