title: Return Dictionary<string, string> or IEnumerable<KeyValuePair<string, string>>
body: <p>From what I read best practices are to "always" expose interfaces from your classes.</p>
  
  <p>So assuming that there is no need for the caller to receive a <code>Dictionary&lt;string, string&gt;</code>, should I just return <code>IEnumerable&lt;KeyValuePair&lt;string, string&gt;&gt;</code>, even if internally my class uses a <code>Dictionary&lt;string, string&gt;</code>?</p>
  
  <p>My code is as follows:</p>
  
  <pre><code>public static IEnumerable&lt;KeyValuePair&lt;string,long&gt;&gt; GetHddSize()
  {
      var drives = DriveInfo.GetDrives();
  
      var dictionary = drives.ToDictionary(drive =&gt; drive.Name, drive =&gt; drive.TotalSize);
  
      return dictionary;
  }
  </code></pre>