Pattern for updating references of interface implementations
<p>I have the following interface: </p>

<pre><code> public interface ISearchProperties {
    string CurrentUserLocation { get; set; }
    string SearchUsername { get; set; }
 }
</code></pre>

<p>With the following implementations: </p>

<pre><code>public class BroadcastPreviewDto : ISearchProperties {
    // other properties
}
public class ProfileSearchDto : ISearchProperties {
    // other properties
}
</code></pre>

<p>I have the following functions:</p>

<pre><code>public void PrepSearchProperties(ProfileSearchDto query) {
    // do a bunch of stuff to query properties here (only on ISearchProperties properties)
}
public void PrepSearchProperties(BroadCastPreviewDto query) {
    // do a bunch of same stuff to query properties here (only on ISearchProperties properties)
}
</code></pre>

<p>The problem is that this isn't very DRY - the function bodies are exactly the same thing.  I tried doing this: </p>

<pre><code>public void PrepSearchProperties(ISearchProperties query) {
    // do a bunch of stuff to query properties here
}
</code></pre>

<p>But this doesn't quite work unless I declare the original <code>query</code> as <code>ISearchProperties</code>, which strips the implementing class properties.</p>

<p>What pattern can I follow to DRY my code up?</p>