annotate datagear/dg/DataGear.cs @ 34:1236da135f79

update
author riono <e165729@ie.u-ryukyu.ac.jp>
date Tue, 27 Apr 2021 22:57:14 +0900
parents 96fc5e71274e
children 090be804eaa9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 using System;
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 namespace Christie_net.datagear.dg {
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
4 public class DataGear<T> {
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
5 protected T data;
9
ce6906edcbf4 fix DataGear<Type> to DataGear<object>
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
6 protected Type clazz = null;
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
7
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
8 public DataGear(T data) {
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
9 SetClazz(data.GetType());
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
10 SetData(data);
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
11 }
1
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
13 public DataGear(Type clazz) {
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
14 SetClazz(clazz);
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
15 }
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
16
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
17 public void SetData(T data) {
30
96fc5e71274e Run HelloWorld
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
18 //Console.WriteLine("data ****" + data.GetType() + " clazz;" + clazz);
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
19 var dataClazz = data.GetType();
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
20 if (dataClazz == clazz) {
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
21 this.data = data;
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
22 return;
1
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 }
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
25 var dataSuperClazz = dataClazz.BaseType;
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
26 while (dataSuperClazz != null) {
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
27 if (dataClazz == clazz) {
1
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 this.data = data;
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 return;
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 }
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
32 dataSuperClazz = dataSuperClazz.BaseType;
1
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 }
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
35 var interfaces = dataClazz.GetInterfaces();
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
36 foreach (var interfaze in interfaces)
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
37 if (interfaze == clazz) {
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
38 this.data = data;
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
39 return;
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
40 }
3
f27db91a852e update MessagePackDagaGear.cs
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
41
30
96fc5e71274e Run HelloWorld
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
42 throw new InvalidCastException("datagear cannot set class from " + dataClazz.GetType().Name + " to " +
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
43 data.GetType().Name);
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
44 }
3
f27db91a852e update MessagePackDagaGear.cs
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
45
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
46 public void SetClazz(Type clazz) {
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
47 this.clazz = clazz;
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
48 }
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
49
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
50 public Type GetClazz() {
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
51 return clazz;
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
52 }
3
f27db91a852e update MessagePackDagaGear.cs
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
53
34
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 30
diff changeset
54 public virtual T GetData() {
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
55 return data;
1
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 }
8
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
57
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
58 public override string ToString() {
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
59 return "DataGear : classname " + clazz;
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
60 }
e6f5b7d14dd1 update DataGears
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
61 }
1
740b80680d75 add Codegear and Datagear files
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 }