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

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

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

    } 

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

}

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

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

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

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

User message to contract call can only be string literal, or a static field, or static property that is at least internally visible.

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

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

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