locked
How to define contract for abstract methods? RRS feed

  • Question

  • How can I define a contract for the abstract GetSubscriptions method in the following example, except by introducing an interface and defining the contract on that?

    public IEnumerable<T> GetSubscriptions()
    {
        using (var connection = _dataProviderFactory.CreateDbConnection(_connectionString))
        {
            connection.Open();
            var subscriptionsQuery = GetSubscriptions(connection);
            Contract.Assume(subscriptionsQuery != null);        
            var subscriptions = subscriptionsQuery.ToList();
            Contract.Assume(subscriptions != null);
            _logger.Log(LogEvents.SubscriptionsRead, subscriptions.Count(), typeof(T).Name);
            return subscriptions;
        }
    }
     
    protected abstract IEnumerable<T> GetSubscriptions(IDbConnection connection);
    PS: This forum editor really sucks ;)

    Friday, April 8, 2011 3:26 PM

Answers

  • The same way you write contracts for interfaces; see 2.9 in the manual.

    Regards,
    Alex

    Saturday, April 9, 2011 10:57 AM