0
I次のインタフェースがあります。以下の実装とパターン
public interface ISearchProperties {
string CurrentUserLocation { get; set; }
string SearchUsername { get; set; }
}
:
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)
}
問題:私は、次のような機能を持っている
public class BroadcastPreviewDto : ISearchProperties {
// other properties
}
public class ProfileSearchDto : ISearchProperties {
// other properties
}
をこれはあまり乾燥していないということです - 関数本体はまったく同じものです。私はこれをやってみました:
public void PrepSearchProperties(ISearchProperties query) {
// do a bunch of stuff to query properties here
}
をしかし、私は実装するクラスのプロパティを取り除きISearchProperties
、として元query
を宣言しない限り、これはかなりの仕事をしません。
私のコードをどのようにDRYすることができますか?
「ref」を絶対に使用する必要がありますか? - 単に 'public void PrepSearchProperties(ISearchProperties query)'メソッドを持たないのはなぜですか? – Corak
@Corak 'Prep'から' ISearchProperties'オブジェクトを返すと、 'ISearchProperties'を私が渡している具体的な型に変換する必要があります - これは悪くないですか? – RobVious
何も返品する必要はありません。実際に 'query'に新しい値を代入しない限り、' ref'は必要ありません。あなたですか?おそらく、あなたは 'ref 'が何をするのかをよく理解していないかもしれないと思うかもしれません。 – Blorgbeard