他の人が述べたように、転送が含まれていない場合を除いて、DTOを使用しても意味がありません... :)
私が提案する解決策は、渡されたオブジェクトをAccountant
インターフェイスに抽象化し、それIAccountee
をPerson
実装することです...私はC#に精通していません(あなたのプロフィールから、あなたが選んだ言語だと推測しました:))が、これはおそらくあなたを正しい方向に向けるはずです:
class Accountant {
//....
public void performAction(IAccountee target)
{
}
}
interface IAccountee
{
string Name
{
get;
}
int Salary
{
get;
set;
}
}
class Person : IAccountee
{
//implementation here, as well as some stuff specific to Person
}
基本的に、それは SOLID のDです:) ... 柔軟でクリーンであり、不必要な情報を共有することも避けます ...Person
Accountant
私が理解している限り、C# インターフェイスは (ほとんどの言語と同様に) 変数を必要とすることができないため、アクセサーを作成する必要があります (デフォルトのプレーン アクセサーを生成する言語/IDE 機能がない限り) まだ作成していない場合...単純な変数を使用するよりも少し時間がかかり、単純なフィールドアクセスよりも多くのパフォーマンスが必要ですが、OTOH、少なくともパフォーマンスが得られない場合は、良い習慣だと思います...間違いなくそうだと思います追加の DTO クラスを作成してデータを前後に (または少なくとも一方向に) コピーするよりもエレガントです ...
それが役立つことを願っています...;)