WPF Caliburn.Micro根据Model自动生成ViewModel

阅读: 评论:0

WPF Caliburn.Micro根据Model自动生成ViewModel

WPF Caliburn.Micro根据Model自动生成ViewModel

依赖属性的编写纯属体力活,用代码来实现吧

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小时内删除。

标签:自动生成   Caliburn   WPF   Micro   ViewModel
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23