問題タブ [icloneable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
10289 参照

c# - .NET ライブラリを PCL に移植するときに ICloneable インターフェイスが見つからない問題を回避するには?

既存の .NET クラス ライブラリをポータブル クラス ライブラリに移植しています。.NET ライブラリは、ポータブル サブセットに含まれていないICloneableインターフェイスを広範囲に使用します。

通常、私は .NET クラス ライブラリで次のようなクラス定義に直面しています。

このコードをポータブル クラス ライブラリに移植するにはどうすればよいですか? Cloneメソッドの呼び出しを書き直す必要がありますか、それともあまり邪魔にならない回避策はありますか?

メソッドがコンパイルされないwhere T : ICloneableため、ジェネリック型の制約を単純に削除することはできません。Bar

ICloneable移植されたコードの代わりに使用する代替インターフェイスを作成できます。

これは、Foo<T>を実装するクラスでのみインスタンス化する限り機能しますが、たとえばArrayなどのを実装するコア ライブラリの型では機能しませんIPCLCloneableICloneable

ICloneable(完全を期すために、インターフェイスは存在しないため、ポータブル サブセット コア ライブラリには明示的に実装されていませんが、object Clone()メソッドはポータブル サブセットArrayクラスに存在し、結果的に などの配列実装に存在することを指摘しておく必要がありますint[]。)

他にどのようなオプションがありますか?

0 投票する
7 に答える
105532 参照

c# - ICloneable を実装する適切な方法

ICloneableクラス階層で実装する適切な方法は何ですか? 抽象クラスがあるとしDrawingObjectます。から別の抽象クラスRectangularObjectが継承されDrawingObjectます。Shape次に、Text、などの複数の具象クラスがあり、Circleそれらはすべて から継承されRectangularObjectます。実装ICloneableしてDrawingObjectから階層を下に運び、各レベルで使用可能なプロパティをコピーCloneし、次のレベルで親のプロパティを呼び出します。

ただし問題は、最初の 2 つのクラスが抽象クラスであるため、メソッドでそれらのオブジェクトを作成できないことClone()です。したがって、各具象クラスでプロパティのコピー手順を複製する必要があります。それとももっと良い方法がありますか?

0 投票する
2 に答える
2712 参照

c# - ICloneable インターフェイス

これは、「Watson et al: Beginning Visual C# Chapter 10: 演習 4」に関連しています: People クラスに ICloneable インターフェイスを実装して、ディープ コピー機能を提供する

Person クラスには次のものがあります。

Program.cs でテストするには:

これは機能し、「Mick」の元の値が保持されます。しかし問題は、そもそも Person と People クラスに ":ICloneable" を実装するところまでです。コードは、それがあってもなくても同じように機能します。

関連する質問は、彼らの例で ICloneable の「再帰的」実装を実行することの有効性です。

この再帰を機能させるために惨めに試みましたが、最終的には StackOverflow になります。グローバル/静的変数を使用してループを終了する以外に、これを「再帰的に」実装するエレガントな方法はありますか?

0 投票する
2 に答える
192 参照

c# - Resharper、ICloneable、null にならない

Resharper は、次のコードについて、「式が常に false である」ため、最後の null チェックが冗長であると不満を述べています。

null にならないことをどのようにして知るのでしょうか?

0 投票する
1 に答える
663 参照

c# - Silverlight でのオブジェクトのディープ コピー

IFormatters や IcCloanble などのインターフェイスがサポートされていない Silverlight 5でオブジェクトのコピーを作成しようとしていました。*

私のオブジェクトは次のようなものです: (これらのオブジェクトは xml の逆シリアル化で取得されることに注意してください): 私は次のようにコピーしようとしました:

確かにうまくいかないので、Googleでの検索でこのコードを取得しました:

しかし、silverligth5 の問題は次のとおりです。

Silverlight 5 に代替手段はありますか。詳しく説明してください。どうもありがとう。

0 投票する
1 に答える
1476 参照

vb.net - 派生クラスを複製可能にするにはどうすればよいですか?

両方を実装する基本クラスと派生クラスを作成しようとしていますICloneableClone基本クラスのメソッドはすべての基本クラスのプロパティを処理し、派生クラスのCloneメソッドはすべての派生クラスのプロパティを処理し、基本クラスのメソッドを使用する必要があるように思えCloneます。結果は次のようになります。

これにより、行 (1) で実行時例外が発生しますUnable to cast object of type MyBaseClass to type MySubClassが、これには驚かなかったと告白します。その行を

コンパイルエラーが発生しました。MyBaseClass基本クラスのメンバーをMySubClass基本クラスのClone. あまり魅力的でない代替手段は、基本クラスのメンバーをサブクラスの にコピーすることCloneです。ここで何をすべきか知っている人はいますか?

ここで質問を見てきましたが、それをVB.Netに変換できません。ここに記載されている解決策が必要な場合は、そのアイデアをあきらめます。時間がたてば、 base class を作成する予定MustInheritです。

0 投票する
1 に答える
299 参照

wcf - WCFを介して継承を渡す悪夢

次のようなWCFサービスのクラスがあります

サービス参照が追加されたクライアント側で、オブジェクト ブラウザーで参照を開きましたが、"IExtensibleDataObject" のような継承されたインターフェイスとして ICloneable を渡しませんでした。

どうすれば合格できるか知っている人はいますか?