Can I create a generic interface
<p>I have the following interface called IAccountService. I also have exactly the same interfaces for Product and Package etc.   </p>

<pre><code>public interface IAccountService
    {
        void AddOrUpdate(Account account);
        void Delete(Account account);
        bool DoesTableExist();
        Account Get(Account account);
        Account Get(string pk, string rk);
        IEnumerable&lt;Account&gt; Get();
        IEnumerable&lt;Account&gt; Get(string pk);
        string GetOptions(string pk, string rk);
        IEnumerable&lt;AccountDetail&gt; ShowDetails(ref string runTime);
        IEnumerable&lt;AccountSummary&gt; ShowSummary(ref string runTime);
        void ValidateNoDuplicate(Account account);
        void ValidateNoProducts(Account account);
    }
</code></pre>

<p>I created some generic methods but I am wondering can I also create a generic interface. If so then how would I call it and how could I change the above to make it generic. Presently I use this interface as follows:</p>

<pre><code>public class AccountService : BaseService, IAccountService
</code></pre>

<p>Update 1</p>

<p>Thanks for all the suggestions. The one thing I still have a problem with is AccountDetail and AccountSummary classes. I am thinking maybe these should be sub classes. But how then can I handle the naming of those? I would have to take the class name, append Detail and then use that in the interface. IS that possible?</p>

<p>Update 2</p>

<p>Here's an example of the detail and summary classes:</p>

<pre><code>public class AccountDetail
{
    public string Title { get; set; }
    public string Product { get; set; }
}
public class AccountSummary
{
    public string Title { get; set; }
    public Int32? ProductCount { get; set; }
    public string PartitionKey{ get; set; }
    public string RowKey { get; set; }
    public DateTime? Modified { get; set; }
    public string ModifiedBy { get; set; }
}
</code></pre>

<p>The above classes are used for reporting. I am thinking that they probably should not be part of the model repository. Maybe they should be in another place. </p>

<p>Regarding the ref comments. The ref is there because in my controller I call the following method:</p>

<pre><code>_account.ShowDetails(ref runTime);
</code></pre>

<p>The output of ShowDetails is a list of details and the runTime reference is updated with the time that it takes to run the report.</p>
