public void CreateDriver(DependencyObject root) { //FormとUserControlを全取得 var recursiveCheck = new List <DependencyObject>(); var targets = new Dictionary <Type, DependencyObject>(); //ルートはUserControlでなくても指定されたらUserControlDriverを作れるようにする if (!(root is UserControl)) { targets[root.GetType()] = root; } var getFromControlTreeOnly = new List <Type>(); GetAllWindowAndUserControl(false, root, targets, getFromControlTreeOnly, recursiveCheck); //ドライバ情報を取得 var driverInfos = new Dictionary <Type, DriverInfo <DependencyObject> >(); foreach (var e in targets) { var fileName = $"{_driverTypeNameManager.MakeDriverType(e.Value)}.cs"; var info = CreateDriverInfo(e.Value, fileName); driverInfos[e.Key] = info; } //変換 foreach (var e in driverInfos) { var driverName = _driverTypeNameManager.MakeDriverType(e.Value.Target, out var nameSpace); if (string.IsNullOrEmpty(nameSpace)) { nameSpace = DriverCreatorAdapter.SelectedNamespace; } //コード生成 DriverCreatorAdapter.AddCode($"{driverName}.cs", GenerateCode(root, e.Value.Target, nameSpace, driverName, e.Value.Usings, e.Value.Members, getFromControlTreeOnly), e.Value.Target); } }
public string CreateDriverClassName(object coreObj) { var driverTypeNameManager = new DriverTypeNameManager(DriverCreatorAdapter.SelectedNamespace, DriverCreatorAdapter.TypeFullNameAndWindowDriver, DriverCreatorAdapter.TypeFullNameAndUserControlDriver); return(driverTypeNameManager.MakeDriverType(coreObj, out var _)); }