問題タブ [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.
c# - .NET ライブラリを PCL に移植するときに ICloneable インターフェイスが見つからない問題を回避するには?
既存の .NET クラス ライブラリをポータブル クラス ライブラリに移植しています。.NET ライブラリは、ポータブル サブセットに含まれていないICloneableインターフェイスを広範囲に使用します。
通常、私は .NET クラス ライブラリで次のようなクラス定義に直面しています。
このコードをポータブル クラス ライブラリに移植するにはどうすればよいですか? Clone
メソッドの呼び出しを書き直す必要がありますか、それともあまり邪魔にならない回避策はありますか?
メソッドがコンパイルされないwhere T : ICloneable
ため、ジェネリック型の制約を単純に削除することはできません。Bar
ICloneable
移植されたコードの代わりに使用する代替インターフェイスを作成できます。
これは、Foo<T>
を実装するクラスでのみインスタンス化する限り機能しますが、たとえばArrayなどのを実装するコア ライブラリの型では機能しません。IPCLCloneable
ICloneable
ICloneable
(完全を期すために、インターフェイスは存在しないため、ポータブル サブセット コア ライブラリには明示的に実装されていませんが、object Clone()
メソッドはポータブル サブセットArray
クラスに存在し、結果的に などの配列実装に存在することを指摘しておく必要がありますint[]
。)
他にどのようなオプションがありますか?
c# - ICloneable を実装する適切な方法
ICloneable
クラス階層で実装する適切な方法は何ですか? 抽象クラスがあるとしDrawingObject
ます。から別の抽象クラスRectangularObject
が継承されDrawingObject
ます。Shape
次に、Text
、などの複数の具象クラスがあり、Circle
それらはすべて から継承されRectangularObject
ます。実装ICloneable
してDrawingObject
から階層を下に運び、各レベルで使用可能なプロパティをコピーClone
し、次のレベルで親のプロパティを呼び出します。
ただし問題は、最初の 2 つのクラスが抽象クラスであるため、メソッドでそれらのオブジェクトを作成できないことClone()
です。したがって、各具象クラスでプロパティのコピー手順を複製する必要があります。それとももっと良い方法がありますか?
c# - ICloneable インターフェイス
これは、「Watson et al: Beginning Visual C# Chapter 10: 演習 4」に関連しています: People クラスに ICloneable インターフェイスを実装して、ディープ コピー機能を提供する
Person クラスには次のものがあります。
Program.cs でテストするには:
これは機能し、「Mick」の元の値が保持されます。しかし問題は、そもそも Person と People クラスに ":ICloneable" を実装するところまでです。コードは、それがあってもなくても同じように機能します。
関連する質問は、彼らの例で ICloneable の「再帰的」実装を実行することの有効性です。
この再帰を機能させるために惨めに試みましたが、最終的には StackOverflow になります。グローバル/静的変数を使用してループを終了する以外に、これを「再帰的に」実装するエレガントな方法はありますか?
c# - Resharper、ICloneable、null にならない
Resharper は、次のコードについて、「式が常に false である」ため、最後の null チェックが冗長であると不満を述べています。
null にならないことをどのようにして知るのでしょうか?
c# - Silverlight でのオブジェクトのディープ コピー
IFormatters や IcCloanble などのインターフェイスがサポートされていない Silverlight 5でオブジェクトのコピーを作成しようとしていました。*
私のオブジェクトは次のようなものです: (これらのオブジェクトは xml の逆シリアル化で取得されることに注意してください): 私は次のようにコピーしようとしました:
確かにうまくいかないので、Googleでの検索でこのコードを取得しました:
しかし、silverligth5 の問題は次のとおりです。
Silverlight 5 に代替手段はありますか。詳しく説明してください。どうもありがとう。
vb.net - 派生クラスを複製可能にするにはどうすればよいですか?
両方を実装する基本クラスと派生クラスを作成しようとしていますICloneable
。Clone
基本クラスのメソッドはすべての基本クラスのプロパティを処理し、派生クラスのClone
メソッドはすべての派生クラスのプロパティを処理し、基本クラスのメソッドを使用する必要があるように思えClone
ます。結果は次のようになります。
これにより、行 (1) で実行時例外が発生しますUnable to cast object of type MyBaseClass to type MySubClass
が、これには驚かなかったと告白します。その行を
コンパイルエラーが発生しました。MyBaseClass
基本クラスのメンバーをMySubClass
基本クラスのClone
. あまり魅力的でない代替手段は、基本クラスのメンバーをサブクラスの にコピーすることClone
です。ここで何をすべきか知っている人はいますか?
ここで質問を見てきましたが、それをVB.Netに変換できません。ここに記載されている解決策が必要な場合は、そのアイデアをあきらめます。時間がたてば、 base class を作成する予定MustInherit
です。
wcf - WCFを介して継承を渡す悪夢
次のようなWCFサービスのクラスがあります
サービス参照が追加されたクライアント側で、オブジェクト ブラウザーで参照を開きましたが、"IExtensibleDataObject" のような継承されたインターフェイスとして ICloneable を渡しませんでした。
どうすれば合格できるか知っている人はいますか?