依赖属性的编写纯属体力活,用代码来实现吧
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;namespace GeneratePropdp
{class Program{static void Main(string[] args){var s= GenCode.GenPD<ClsModel>(new ClsModel());Console.WriteLine(s);s= GenCode.GenPD<ClsBB>(new ClsBB());Console.WriteLine(s);}}public class GenCode{private static string ClassTemplate = @"
public class ClassName:Screen
{Code
}
";private static string Template = @"private Type _priFeild;
public Type Propp
{get { return _priFeild; }set{_priFeild = value;NotifyOfPropertyChange(() => Propp);
}
}";public static string GenPD<T>(T t){var tType = t.GetType();var PropInfos= tType.GetProperties();StringBuilder sb = new StringBuilder();foreach (var x in PropInfos){if(x.CanWrite && x.CanRead){var name = x.Name;var propType = x.PropertyType.Name;if (x.PropertyType.IsClass && !x.PropertyType.Namespace.StartsWith("System")){propType = propType + "VM";}var priName = "_" + name.ToLower();sb.Append(Template.Replace("Propp", name).Replace("Type", propType).Replace("_priFeild", priName));}}return ClassTemplate.Replace("Code", sb.ToString()).Replace("ClassName",tType.Name+"VM");}}public class ClsBB{public bool Enable { get; set; }}public class ClsModel{public string Aaaa { get; set; }public ClsBB SN { get; set; } = new ClsBB();}}
本文发布于:2024-01-31 20:04:41,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170670268331030.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |