1

ポータブル ライブラリで ObservableCollection を使用していますが、以下のエラーが発生します。どうすればこの問題を解決できますか?

「System.Collections.ObjectModel.ObservableCollection 1<MyClass>' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'System.Collections.ObjectModel.ObservableCollection1」が見つかりました (using ディレクティブまたはアセンブリ参照がありませんか?)

編集:ポータブルライブラリにこのクラスがあります

Class A
{

public ObservableCollection<MyClass> MyList { get;set;}

}

そしてそれをWCFサービスで使用しようとしています。

myA.MyList.Add(new MyClass());

2番目の編集:監視可能なコレクションプロパティを持つクラスを別のプロジェクト/ライブラリに配置することで、それを理解しました。しかし、なぜその奇妙なエラーが発生したのか、まだ疑問に思っています。

この質問に対する別の解決策は、私のプロジェクトのより良いソリューション構造です。私はまだそれを管理しようとしています。

WCF サービスを使用する Silverlight プロジェクトを設計しています。Silverlight と WCF サービスの両方で共有する共通のクラスがいくつかあります。ObservableCollection や SortedList などのデータ構造を使用する必要があるため、ポータブル クラスと共有だけでは機能しませんでした。ポータブル クラスにはこれがありません。そのため、私はさまざまなライブラリにサロゲート クラスを持っていますが、これは見栄えがよくありません。どのように設計すればよいですか?

4

1 に答える 1

1

エラーは、次のようなオブジェクトのリストで構成されるObservableCollection既存のものにタイプのアイテムを追加しようとしているように聞こえます。ObservableCollectionMyClass

ObservableCollection<object> miscList = new ObservableCollection<object>();
ObservableCollection<MyClass> realList = new ObservableCollection<MyClass>();
realList.Add(miscList); // miscList isn't a "MyClass" object =[

エラーをスローしている行をチェックして、正しい変数を渡していることを確認してください (タイプミスの可能性があります)。

UPDATE
あなたのコード例は、これが事実であることを確認しています。リストを として定義します。つまり、このリストObservableCollection<MyClass>挿入されるオブジェクトは、 のインスタンスによって、またはから継承する必要があります。MyClass MyClass

A次の行では、タイプのオブジェクトをリストに追加しようとしていますが、それAMyClassからも継承もしていませんMyClass:

myA.MyList.Add(new A());

これを修正するには、クラスAを継承MyClass( class A implements MyClass) するか、代わりにリストを変更するか、そのリストObservableCollection<A>にタイプを追加する必要がある理由を再考する必要がありAます (おそらく、代わりに 2 つのリストが必要になるでしょうか?)。

于 2012-10-02T02:33:01.353 に答える