Вы не можете использовать свойства в наборе или получить ... это будет бесконечный цикл.Вы используете это свойство в качестве поля поддержки.
Просто определите поле поддержки и вот оно.
private string id;
public string Id
{
get
{
return this.id;
}
set
{
try
{
this.id = value == null ? Guid.NewGuid().ToString("D") : value;
}
catch (Exception ex) {
throw ex;
}
}
}
}
Также обратите внимание, что, как прокомментировал @Loocid - ваш код будет работать, если выперейти на вспомогательное поле, нет необходимости во втором this.id =