private KeyValuePair <string, string> CreateDictionaryKeyValue(EventArgumentModel model) { var variable = model.Name; if (model.IsImplicit) { variable = $"_{model.Name}"; } var assignment = variable; var assignmentType = model.Type; if (model.Assignment != null) { assignment = model.Assignment.Replace("$this", variable); assignmentType = model.AssignedCLRType; } if ((assignmentType != null) && (EventArgumentModel.ParseType(assignmentType) != typeof(string))) { assignment = $"({assignment}).ToString()"; } var keyOutput = $"{model.Name.Substring(0, 1).ToUpperInvariant()}{model.Name.Substring(1)}"; return(new KeyValuePair <string, string>(keyOutput, assignment)); }
private IEnumerable <EventArgumentModel> GetTypeArguments(Project project, string type) { var argumentType = project.DynamicAssembly.GetType(type); if (argumentType == null) { foreach (var referencedAssembly in project.DynamicAssembly.GetReferencedAssemblies()) { argumentType = Assembly.Load(referencedAssembly).GetType(type); if (argumentType != null) { break; } } } var properties = argumentType?.GetProperties(); foreach (var property in properties ?? new PropertyInfo[0]) { var propertyType = property.PropertyType; var nullableType = Nullable.GetUnderlyingType(propertyType); var defaultValue = ""; if (nullableType != null) { propertyType = nullableType; if (!nullableType.IsClass) { defaultValue = EventArgumentModel.GetDefaultValue(nullableType) ?? ""; } } var parsedType = EventArgumentModel.ParseType(propertyType.FullName); var assignment = $"$this.{property.Name}"; var propertyTypeName = propertyType.FullName; if (parsedType == typeof(object)) { if (nullableType != null) { assignment = $"($this.{property.Name}??{defaultValue})"; propertyTypeName = nullableType.FullName; } else { assignment = $"$this.{property.Name}.AsJson()"; propertyTypeName = typeof(string).FullName; } } yield return(new EventArgumentModel(property.Name, propertyTypeName, assignment)); } }