Mercurial > hg > Database > Christie-sharp
view datagear/dg/DataGear.cs @ 42:ce46626dddb1
RemoteDG string send test
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 19 Sep 2021 17:04:08 +0900 |
parents | 0cd765be9693 |
children | 476b6efeca5b |
line wrap: on
line source
using System; namespace Christie_net.datagear.dg { public class DataGear<T> { protected T data; protected Type clazz = null; public DataGear(T data) { SetClazz(data.GetType()); SetData(data); //Console.WriteLine("type:" + data.GetType()); } public DataGear(Type clazz) { SetClazz(clazz); } public void SetData(T data) { // debug //Console.WriteLine("data ****" + data.GetType() + " clazz;" + clazz + ", d:" + data); var dataClazz = data.GetType(); if (dataClazz == clazz) { this.data = data; return; } Console.WriteLine("call1"); var dataSuperClazz = dataClazz.BaseType; while (dataSuperClazz != null) { if (dataClazz == clazz) { this.data = data; return; } dataSuperClazz = dataSuperClazz.BaseType; } Console.WriteLine("call2"); var interfaces = dataClazz.GetInterfaces(); foreach (var interfaze in interfaces) if (interfaze == clazz) { this.data = data; return; } Console.WriteLine("call3"); throw new InvalidCastException("datagear cannot set class from " + dataClazz.GetType().Name + " to " +data.GetType().Name); } public void SetClazz(Type clazz) { this.clazz = clazz; } public Type GetClazz() { return clazz; } public virtual T GetData() { return data; } public override string ToString() { return "DataGear : classname " + clazz; } } }