Настройка сообщений об исключениях из кода

У меня есть код контракта, который выражается следующим образом: он проверяет, что сущность, которая должна быть сохранена, не равна нулю и действительна для постоянства. Оно работает. Fab.

[ContractClassFor(typeof(IRepository))]
internal abstract class ContractsForIRepository : IRepository where T : IEntity
{
    private ContractsForIRepository()
    {

    } 

    public T Persist(T entity)
    {
        Contract.Requires(entity != null, "Entity is null");
        Contract.Requires(entity.IsValidForPersistence(), "Entity not valid for persistence");
        return default(T);
    }

}

Тем не менее, я хотел бы, чтобы исключение было более полезным - поскольку любой, получающий сообщение, захочет узнать, какой объект был недействительным и как выглядит. Все сущности переопределяют ToString (), поэтому я хотел включить это в сообщение об ошибке:

Contract.Requires(entity.IsValidForPersistence(), "Entity not valid for persistence " + entity.ToString());

Я включил ToString, чтобы быть явным - он будет вызываться неявно, если я его опущу, но я думаю, что это делает мой вопрос более понятным.

Проблема в том, что это неЭто разрешено контрактами кода, и я получаю следующее сообщение.

Сообщение пользователя для вызова по контракту может быть только строковым литералом, или статическим полем, или статическим свойством, которое, по крайней мере, является внутренне видимым.

Есть ли способ включить определенные данные в сообщение об исключении?

Ответы на вопрос(1)

Ваш ответ на вопрос