回答編集履歴

1

Wrapperという表現をやめた

2020/06/09 05:05

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -1,10 +1,10 @@
1
- どうしても`hoge.A_Method();`のような方法で呼び出したいのであれば、1つずつオブジェクトをラップするかないと思います。
1
+ どうしても`hoge.A_Method();`のような方法で呼び出したいのであれば、既存のオブジェクトから必要な情報取り出て新しオブジェクトを取り扱うのが良いと思います。下記コードの場合は新しいデータ保持用のオブジェクトを使って `AModel` と `A` を has a 関係にしています。
2
2
 
3
3
 
4
4
 
5
5
  ```
6
6
 
7
- public interface IWrapper{
7
+ public interface IModel{
8
8
 
9
9
  int Property { get; set; }
10
10
 
@@ -14,11 +14,11 @@
14
14
 
15
15
 
16
16
 
17
- public class AWrapper : IWrapper{
17
+ public class AModel: IModel{
18
18
 
19
19
  private A a;
20
20
 
21
- public AWrapper(A a){
21
+ public AModel(A a){
22
22
 
23
23
  this.a = a;
24
24
 
@@ -38,11 +38,11 @@
38
38
 
39
39
 
40
40
 
41
- public class BWrapper : IWrapper{
41
+ public class BModel : IModel{
42
42
 
43
43
  private B b;
44
44
 
45
- public BWrapper(B b){
45
+ public BModel(B b){
46
46
 
47
47
  this.b = b;
48
48
 
@@ -72,11 +72,11 @@
72
72
 
73
73
  public class Hoge {
74
74
 
75
- public void DoSomething(IWrapper wrapper){
75
+ public void DoSomething(IModel model){
76
76
 
77
77
  // 共通処理...
78
78
 
79
- Console.WriteLine($"Property is {wrapper.Property}, Method is {wrapper.Method()}");
79
+ Console.WriteLine($"Property is {model.Property}, Method is {model.Method()}");
80
80
 
81
81
  }
82
82