Delphiは、ここで言い換え1つの目的は、相互にコピーすることができる標準的なメカニズムを持っています。DelphiのAssign/AssignToに対応する.NET対応の構文はありますか?
class Persistent
{
protected AssignError(Persistent source)
{
throw new ConvertError("Cannot assign a {0} to a {1}", source.GetType().Name, this.GetType().Name);
}
protected virtual AssignTo(Persistent destination)
{
destination.AssignError(this);
}
public virtual Assign(Persistent source)
{
source.AssignTo(this);
}
}
は、.NET FCLは、互いの間のオブジェクトのコピーの標準構文を有していますか?
例えば:
interface IPersistent
{
public virtual Assign(Object source);
}
public class User : IPersistent
{
private Image avatarThumbnail;
private String name;
public override Assign(Object source)
{
if (source is User)
{
this.avatarThumbnail = source.avatarThumbnail;
this.name = source.Name;
}
else if (source is Image)
avatarThumbnail = (Image)source;
else if (source is DirectoryEntry)
name = ((DirectoryEntry) source).Firstname + " " + ((DirectoryEntry) source).Lastname;
else
throw new AssignError("Assign from {0}", source.GetType());
}
}
はい、私はちょうど標準IPersistent
インタフェースを考案。お互いにオブジェクトをコピーするメカニズムはすでに存在していますか?
更新
注:私は、オブジェクトのクローンを作成する反対について話しています。
User originalUser = new User();
User theClone = originalUser.Clone();
theClone.Lastname = "Guyer";
originalUser.Assign(theClone);
それとも、私もまったくクローンを持っている必要はありません。
User u = new User();
u.Assign(salesOrder); //copy name/e-mail from the sales order
または
SalesOrder s = new SalesOrder();
s.SalesOrderDate = DateTime.Now;
User customer = new Customer("Kirsten");
s.Assign(user); //copy sold-to/ship-to information from the user
が、あなたはVSでこれを行うかのDelphi 2010の内側にプリズムを使用している – MethodMan
それは依存します - あなたは、代入文があるとき、これらの関数は自動的に呼ばれることを期待しています遭遇? (la C++のコピーコンストラクタ) - もしそうなら、答えはノーです。 –
@DJKRAZE Visual Studio –