using HotelPms.Share.Data;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HotelPms.Share.Util
|
{
|
/// <summary>
|
/// ソースコード自動作成
|
/// </summary>
|
public static class ScriptCreator
|
{
|
/// <summary>
|
/// クラス名でCreateInstance
|
/// </summary>
|
/// <param name="hoObj">hoObj</param>
|
/// <returns>string</returns>
|
public static object ClassForName(string codeBase, string hsClsName)
|
{
|
System.Reflection.Assembly woAssem = null;
|
Type woType = null;
|
try
|
{
|
woAssem = System.Reflection.Assembly.Load(codeBase);
|
woType = woAssem.GetType(hsClsName);
|
return Activator.CreateInstance(woType);
|
}
|
catch(Exception ex)
|
{
|
return null;
|
}
|
}
|
|
/// <summary>
|
/// クラス名でCreateInstance
|
/// </summary>
|
/// <param name="hoObj">hoObj</param>
|
/// <returns>string</returns>
|
public static object ClassForName(string hsClsName)
|
{
|
return ClassForName(System.Reflection.Assembly.GetExecutingAssembly().GetName().Name, hsClsName);
|
}
|
|
/// <summary>
|
/// クラス ⇒ テキストボックス
|
/// </summary>
|
/// <param name="codeBase"></param>
|
/// <param name="className"></param>
|
/// <returns></returns>
|
public static string GetClassToTextBox(string codeBase, string className)
|
{
|
StringBuilder sb = new StringBuilder();
|
object item = ClassForName(codeBase, className);
|
Type type = item.GetType();
|
PropertyInfo[] infos = type.GetProperties();
|
foreach (PropertyInfo field in infos)
|
{
|
string name = field.Name;
|
if (field.PropertyType.FullName.Contains("System.Collections.Generic.List")) { continue; }
|
if (field.PropertyType.FullName.Contains("System.Data.DataSet")) { continue; }
|
if (field.PropertyType.FullName.Contains("System.Object")) { continue; }
|
|
if ("System.Boolean".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"txt{name}.Text = item.{name} ? \"1\" : \"0\";");
|
}
|
else if ("System.Decimal".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"txt{name}.Text = item.{name}.ToString();");
|
}
|
else if ("System.Int32".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"txt{name}.Text = item.{name}.ToString();");
|
}
|
else if ("System.String".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"txt{name}.Text = item.{name};");
|
}
|
else if ("System.DateTime".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"txt{name}.Text = CConvert.ToDateString(item.{name});");
|
}
|
else if ("customTypes.Date".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"txt{name}.Text = CConvert.ToDateString(item.{name}.ToDateTime());");
|
}
|
else if ("customTypes.DecimalValue".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"txt{name}.Text = item.{name}.ToText();");
|
}
|
else if ("Google.Protobuf.WellKnownTypes.Timestamp".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"txt{name}.Text = CConvert.ToDateString(item.{name}.ToDateTime());");
|
}
|
else
|
{
|
continue;
|
}
|
}
|
return sb.ToString();
|
}
|
|
/// <summary>
|
/// テキストボックス⇒クラス
|
/// </summary>
|
/// <param name="codeBase">Projectの名称:例えば Forms、Lib</param>
|
/// <param name="className"></param>
|
/// <returns></returns>
|
public static string GetTextBoxToClass(string codeBase, string className)
|
{
|
StringBuilder sb = new StringBuilder();
|
object item = ClassForName(codeBase, className);
|
Type type = item.GetType();
|
PropertyInfo[] infos = type.GetProperties();
|
foreach(PropertyInfo field in infos)
|
{
|
string name = field.Name;
|
if (field.PropertyType.FullName.Contains("System.Collections.Generic.List")) { continue; }
|
if (field.PropertyType.FullName.Contains("System.Data.DataSet")) { continue; }
|
if (field.PropertyType.FullName.Contains("System.Object")) { continue; }
|
|
if ("System.Boolean".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"item.{name} = CConvert.ToBool(txt{name}.Text);");
|
}
|
else if ("System.Decimal".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"item.{name} = CConvert.ToDecimal(txt{name}.Text);");
|
}
|
else if ("System.Int32".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"item.{name} = CConvert.ToInt(txt{name}.Text);");
|
}
|
else if ("System.String".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"item.{name} = txt{name}.Text;");
|
}
|
else if ("System.DateTime".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"item.{name} = CConvert.ToDateTime(txt{name}.Text);");
|
}
|
else if ("customTypes.Date".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"item.{name} = new Date(CConvert.ToDateInt(txt{name}.Text));");
|
}
|
else if ("customTypes.DecimalValue".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"item.{name} = CConvert.ToDecimal(txt{name}.Text);");
|
}
|
else if ("Google.Protobuf.WellKnownTypes.Timestamp".Equals(field.PropertyType.FullName))
|
{
|
sb.AppendLine($"item.{name} = CConvert.ToTimestamp(CConvert.ToDateTime(txt{name}.Text));");
|
}
|
else
|
{
|
continue;
|
}
|
}
|
return sb.ToString();
|
}
|
}
|
}
|