やりたいこと
下記の条件を満たすときのみObservableCollection<T>に拡張メソッドを追加したいのですが、
その実装方法が分からず困っています。
<条件>
①あるメソッド(CSV化する)を強制しているインターフェースを用意する。
②そのインターフェースを実装しているクラスがある。
③そのクラスのObservableCollectionに対してのみ拡張メソッド(全体をCSV化)を有効にしたい。
該当のソースコード
C#
1//拡張メソッド 一部抜粋 2 static public class ExObservableCollection 3 { 4 static public void ExportToCSV(this ObservableCollection<IConvertCSV> Entities) 5 { 6 foreach(IConvertCSV Entity in Entities) 7 { 8 csv += Entity.ToCSV(); 9 } 10 } 11 }
C#
1//インターフェース 一部抜粋 2 public interface IConvertCSV 3 { 4 public string ToCSV() 5 }
C#
1//インターフェースを実装したクラス 一部抜粋 2 public sealed class Test : IConvertCSV 3 { 4 }
C#
1ObservableCollection<Test> Tests; 2//(中略:中身を格納) 3Tests.ExportToCSV(); 4//ここでExportToCSVの定義が含まれていないと警告が出る
質問
以上のように記載してみたのですが、
どこかを修正すればやりたいことは実現できますでしょうか。
そもそもの考え方や方向性が異なる場合などあるかもしれませんが、
そういった部分も含めてアドバイスをお願いいたします。
補足情報
C#
WPF
を使用しています。
回答2件
あなたの回答
tips
プレビュー