public void Generate_Should_Return_DataTable_With_Specified_Row_Count(Type dataTableType) { // Arrange const int RowCount = 100; Func <AutoGenerateContext, int> rowCountFunctor = _ => RowCount; var context = CreateContext(dataTableType, dataTableRowCountFunctor: rowCountFunctor); bool success = DataTableGenerator.TryCreateGenerator(context.GenerateType, out var generator); Skip.IfNot(success, $"couldn't create generator for {dataTableType.Name}"); // Act var result = generator.Generate(context); // Assert result.Should().BeOfType(dataTableType); var dataTable = (DataTable)result; dataTable.Columns.Should().NotBeEmpty(); dataTable.Rows.Should().HaveCount(RowCount); }
public JsonResult Register(UsersModel newUser) { DataTable dt = new DataTableGenerator().GetDataTable(@"Select * from Users where email = '" + newUser.email.ToString() + "'"); if (dt.Rows.Count == 1) { return(Json(new UsersModel(), JsonRequestBehavior.AllowGet)); } else { UsersModel model = new UsersModel(); SqlTool sql = new SqlTool(); model.fname = newUser.fname; model.lname = newUser.lname; model.username = newUser.username; model.password = newUser.password; model.email = newUser.email; sql.runQuery("Insert into Users (fname,lname,email,password,username) select '" + model.fname.ToString() + "','" + model.lname.ToString() + "','" + model.email.ToString() + "','" + model.password.ToString() + "','" + model.username + "'"); return(Json(model, JsonRequestBehavior.AllowGet)); } }
private void OnViewLoad(object sender, EventArgs e) { var items = DataTableGenerator.GenerateItemTable(repo.GetAll()); var binding = new BindingSource(); binding.DataSource = items; view.DataSource = binding; }
public void Execute() { PreExecute(); this.commandSQL = GetCommandSQL(); DataTable returnCommand = new DataTableGenerator(commandSQL).Generate(); RefreshObject(returnCommand); }
public JsonResult GetCourses() { DataTableGenerator dtGen = new DataTableGenerator(); DataTable coursesDT = new DataTable(); coursesDT = dtGen.GetDataTable(@"SELECT id,coursename,par,blueteeRating,WhiteTeeRating,CourseSlope,AddressID From Courses"); string coursesDTstring = dtGen.ConvertDataTableToJSONString(coursesDT); return(Json(coursesDTstring, JsonRequestBehavior.AllowGet)); }
public JsonResult GetUsers() { DataTableGenerator dtGen = new DataTableGenerator(); DataTable usersDT = new DataTable(); usersDT = dtGen.GetDataTable("Select id,fname,lname,email,username from Users"); string usersJSONString = dtGen.ConvertDataTableToJSONString(usersDT); return(Json(usersJSONString, JsonRequestBehavior.AllowGet)); }
byte[] IPdfGenerator.GeneratePdfFromJson(string content) { try { if (string.IsNullOrEmpty(content)) { throw new NsiArgumentNullException(DocumentMessages.DocumentContentNotFound); } DataTable dt = DataTableGenerator.GenerateDataTableFromJson(content); byte[] output; MemoryStream stream = new MemoryStream(); Document document = new Document(); PdfWriter writer = PdfWriter.GetInstance(document, stream); document.Open(); Font font5 = FontFactory.GetFont(FontFactory.HELVETICA, 5); PdfPTable table = new PdfPTable(dt.Columns.Count); List <float> widths = new List <float>(); for (int i = 0; i < dt.Columns.Count; i++) { widths.Add(4f); } table.SetWidths(widths.ToArray()); table.WidthPercentage = 100; PdfPCell cell = new PdfPCell(new Phrase()) { Colspan = dt.Columns.Count }; foreach (DataColumn c in dt.Columns) { table.AddCell(new Phrase(c.ColumnName, font5)); } foreach (DataRow r in dt.Rows) { if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Columns.Count; i++) { table.AddCell(new Phrase(r[i].ToString(), font5)); } } } document.Add(table); document.Close(); output = stream.ToArray(); return(output); } catch (Exception e) { throw new NsiBaseException(DocumentMessages.PDFGeneratorFailed, e, Common.Enumerations.SeverityEnum.Error); } }
public void TryCreateGenerator_Should_Create_Generator(Type dataTableType, bool shouldSucceed) { // Act bool success = DataTableGenerator.TryCreateGenerator(dataTableType, out var generator); // Assert if (shouldSucceed) { success.Should().BeTrue(); generator.Should().NotBeNull(); } else { success.Should().BeFalse(); } }
private static void GenerateDataTableEnum() { foreach (string dataTableName in GenerateDataTables) { DataTableProcessor dataTableProcessor = DataTableGenerator.CreateDataTableProcessor(dataTableName); if (!DataTableGenerator.CheckRawData(dataTableProcessor, dataTableName)) { Debug.LogError(Utility.Text.Format("Check raw data failure. DataTableName='{0}'", dataTableName)); break; } GenerateEnumFile(dataTableProcessor, dataTableName); } AssetDatabase.Refresh(); }
string IHtmlGenerator.GenerateHtmlFromJson(string content, string name) { try { if (string.IsNullOrEmpty(content)) { throw new NsiArgumentNullException(DocumentMessages.DocumentContentNotFound); } DataTable dt = DataTableGenerator.GenerateDataTableFromJson(content); StringBuilder strHTMLBuilder = _htmlGeneratorHelper.GenerateOpeningTags(name); strHTMLBuilder.Append("<table border='1px' cellpadding='1' cellspacing='1' bgcolor='white'>"); strHTMLBuilder.Append("<tr >"); foreach (DataColumn myColumn in dt.Columns) { strHTMLBuilder.Append("<td >"); strHTMLBuilder.Append(myColumn.ColumnName); strHTMLBuilder.Append("</td>"); } strHTMLBuilder.Append("</tr>"); foreach (DataRow myRow in dt.Rows) { strHTMLBuilder.Append("<tr >"); foreach (DataColumn myColumn in dt.Columns) { strHTMLBuilder.Append("<td >"); strHTMLBuilder.Append(myRow[myColumn.ColumnName].ToString()); strHTMLBuilder.Append("</td>"); } strHTMLBuilder.Append("</tr>"); } //Close tags. strHTMLBuilder.Append("</table>"); strHTMLBuilder = _htmlGeneratorHelper.GenerateClosingTags(strHTMLBuilder); string Htmltext = strHTMLBuilder.ToString(); return(Htmltext); } catch (Exception e) { throw new NsiBaseException(DocumentMessages.HtmlGeneratorFailed, e, Common.Enumerations.SeverityEnum.Error); } }
public async Task FillStorageWithFakeUsersAsync() { const int recordsCount = 100_000; var dataTable = DataTableGenerator.CreateUsersTable(recordsCount); var connectionString = ConfigurationManager.ConnectionString(); using (var sqlBulk = new SqlBulkCopy(connectionString)) { sqlBulk.DestinationTableName = dataTable.TableName; foreach (var column in dataTable.Columns) { sqlBulk.ColumnMappings.Add(column.ToString(), column.ToString()); } await sqlBulk.WriteToServerAsync(dataTable); } }
public JsonResult GetScores() { DataTableGenerator dtGen = new DataTableGenerator(); DataTable scoresDT = new DataTable(); scoresDT = dtGen.GetDataTable(@" select top 20 scores.id,users.id,scores.courseid,courses.coursename,scores.score,scores.dateplayed,scores.adjustedscore from scores inner join users on scores.userid = users.id inner join courses on courses.id = scores.courseid where users.id = " + Convert.ToInt32(Session["id"]) + "order by scores.dateplayed DESC"); string scoresJSONString = dtGen.ConvertDataTableToJSONString(scoresDT); return(Json(scoresJSONString, JsonRequestBehavior.AllowGet)); }
public void Generate_Should_Return_DataTable(Type dataTableType) { // Arrange var context = CreateContext(dataTableType); bool success = DataTableGenerator.TryCreateGenerator(context.GenerateType, out var generator); Skip.IfNot(success, $"couldn't create generator for {dataTableType.Name}"); // Act var result = generator.Generate(context); // Assert result.Should().BeOfType(dataTableType); var dataTable = (DataTable)result; dataTable.Columns.Should().NotBeEmpty(); dataTable.Rows.Should().NotBeEmpty(); }
public DataSet bindSentMessagesToDataTable(User user, string network) { SocialProfilesRepository socioprofrepo = new SocialProfilesRepository(); List <SocialProfile> alstprofiles = socioprofrepo.getAllSocialProfilesOfUser(user.Id); Messages mstable = new Messages(); DataSet ds = DataTableGenerator.CreateDataSetForTable(mstable); foreach (SocialProfile item in alstprofiles) { if (item.ProfileType == "facebook") { FacebookMessageRepository fbmsgrepo = new FacebookMessageRepository(); List <FacebookMessage> alstfbmsgs = fbmsgrepo.getAllSentMessages(item.ProfileId); if (alstfbmsgs != null) { if (alstfbmsgs.Count != 0) { foreach (FacebookMessage facebookmsg in alstfbmsgs) { ds.Tables[0].Rows.Add(facebookmsg.ProfileId, "facebook", facebookmsg.FromId, facebookmsg.FromName, facebookmsg.FromProfileUrl, facebookmsg.MessageDate, facebookmsg.Message, facebookmsg.FbComment, facebookmsg.FbLike, facebookmsg.MessageId, facebookmsg.Type); } } } } else if (item.ProfileType == "twitter") { TwitterDirectMessageRepository twtmsgrepo = new TwitterDirectMessageRepository(); List <TwitterDirectMessages> lstmsgtwtuser = twtmsgrepo.getAllDirectMessagesById(item.ProfileId); foreach (TwitterDirectMessages lst in lstmsgtwtuser) { ds.Tables[0].Rows.Add(lst.SenderId, "twitter", lst.SenderId, lst.SenderScreenName, lst.SenderProfileUrl, lst.CreatedDate, lst.Message, "", "", lst.MessageId, lst.Type); } } else if (item.ProfileType == "googleplus") { } } return(ds); }
public JsonResult CheckLogin(UsersModel user) { //use email and password to get full user model DataTable dt = new DataTableGenerator().GetDataTable("Select * from Users where email = '" + user.email.ToString() + "'and Password = '******'"); if (dt.Rows.Count == 1) { DataRow dr = dt.Rows[0]; UsersModel model = new UsersModel(); model.email = dr["email"].ToString(); model.password = dr["password"].ToString(); model.id = Convert.ToInt32(dr["id"]); model.fname = dr["fname"].ToString(); model.lname = dr["lname"].ToString(); model.username = dr["username"].ToString(); //Clear Previous SESSION Session.Clear(); //SET THE GLOBAL SESSION USER INFO Session["id"] = model.id; Session["email"] = model.email; Session["password"] = model.password; Session["fname"] = model.fname; Session["lname"] = model.lname; Session["username"] = model.username; return(Json(model, JsonRequestBehavior.AllowGet)); } else { return(Json(new UsersModel(), JsonRequestBehavior.AllowGet)); } }
public static void GenerateDataTableCode() { DataTableGenerator.GenerateDataTables(); AssetDatabase.Refresh(); }
public DataSet bindFeedMessageIntoDataTable(string[] profid) { string fbProfileid = string.Empty; string twtProfileid = string.Empty; string profilId = string.Empty; Messages mstable = new Messages(); DataSet ds = DataTableGenerator.CreateDataSetForTable(mstable); try { foreach (var item in profid) { if (item.Contains("fb_")) { profilId = item.ToString().Split('_')[1]; fbProfileid += profilId + ','; } else if (item.Contains("twt_")) { profilId = item.ToString().Split('_')[1]; twtProfileid += profilId + ','; } else { try { } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } } try { fbProfileid = fbProfileid.Substring(0, fbProfileid.Length - 1); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } try { twtProfileid = twtProfileid.Substring(0, twtProfileid.Length - 1); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } FacebookFeedRepository fbfeedRepository = new FacebookFeedRepository(); List <FacebookFeed> alstfbmsgs = fbfeedRepository.getAllFeedDetail(fbProfileid); try { foreach (FacebookFeed facebookmsg in alstfbmsgs) { try { ds.Tables[0].Rows.Add(facebookmsg.ProfileId, "facebook", facebookmsg.FromId, facebookmsg.FromName, facebookmsg.FromProfileUrl, facebookmsg.FeedDate, facebookmsg.FeedDescription, facebookmsg.FbComment, facebookmsg.FbLike, facebookmsg.FeedId, facebookmsg.Type, facebookmsg.ReadStatus); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } TwitterMessageRepository twtmsgRepository = new TwitterMessageRepository(); List <TwitterMessage> lstmsgtwt = twtmsgRepository.getAlltwtMessages(twtProfileid); try { foreach (TwitterMessage lst in lstmsgtwt) { try { ds.Tables[0].Rows.Add(lst.ProfileId, "twitter", lst.FromId, lst.FromScreenName, lst.FromProfileUrl, lst.MessageDate, lst.TwitterMsg, "", "", lst.MessageId, lst.Type, lst.ReadStatus); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } return(ds); }
public DataSet bindFeedsIntoDataTable(User user, string network) { Messages mstable = new Messages(); DataSet ds = DataTableGenerator.CreateDataSetForTable(mstable); if (!string.IsNullOrEmpty(network)) { /*Facebook region*/ if (network == "facebook") { FacebookAccountRepository fbaccount = new FacebookAccountRepository(); FacebookMessageRepository fbmsg = new FacebookMessageRepository(); ArrayList alstfbaccount = fbaccount.getAllFacebookAccountsOfUser(user.Id); foreach (FacebookAccount item in alstfbaccount) { List <FacebookMessage> lstfbmsg = fbmsg.getAllFacebookMessagesOfUser(user.Id, item.FbUserId); foreach (FacebookMessage facebookmsg in lstfbmsg) { ds.Tables[0].Rows.Add(facebookmsg.ProfileId, "facebook", facebookmsg.FromId, facebookmsg.FromName, facebookmsg.FromProfileUrl, facebookmsg.MessageDate, facebookmsg.Message, facebookmsg.FbComment, facebookmsg.FbLike, facebookmsg.MessageId, facebookmsg.Type); } } } else if (network == "twitter") { TwitterAccountRepository twtaccountrepo = new TwitterAccountRepository(); TwitterFeedRepository twtfeedrepo = new TwitterFeedRepository(); ArrayList alsttwtaccount = twtaccountrepo.getAllTwitterAccountsOfUser(user.Id); foreach (TwitterAccount item in alsttwtaccount) { List <TwitterFeed> lsttwtmsg = twtfeedrepo.getAllTwitterFeedOfUsers(user.Id, item.TwitterUserId); foreach (TwitterFeed twtmsg in lsttwtmsg) { ds.Tables[0].Rows.Add(twtmsg.ProfileId, "twitter", twtmsg.FromId, twtmsg.FromScreenName, twtmsg.FromProfileUrl, twtmsg.FeedDate, twtmsg.Feed, "", "", twtmsg.MessageId, twtmsg.Type); } } } else if (network == "linkedin") { LinkedInAccountRepository liaccountrepo = new LinkedInAccountRepository(); LinkedInFeedRepository lifeedrepo = new LinkedInFeedRepository(); ArrayList alstliaccount = liaccountrepo.getAllLinkedinAccountsOfUser(user.Id); foreach (LinkedInAccount item in alstliaccount) { List <LinkedInFeed> lsttwtmsg = lifeedrepo.getAllLinkedInFeedsOfUser(user.Id, item.LinkedinUserId); foreach (LinkedInFeed limsg in lsttwtmsg) { ds.Tables[0].Rows.Add(limsg.ProfileId, "linkedin", limsg.FromId, limsg.FromName, limsg.FromPicUrl, limsg.FeedsDate, limsg.Feeds, "", "", "", limsg.Type); } } } else if (network == "instagram") { InstagramAccountRepository insAccRepo = new InstagramAccountRepository(); InstagramFeedRepository insFeedRepo = new InstagramFeedRepository(); ArrayList alstlistaccount = insAccRepo.getAllInstagramAccountsOfUser(user.Id); foreach (InstagramAccount item in alstlistaccount) { List <InstagramFeed> lstFeeed = insFeedRepo.getAllInstagramFeedsOfUser(user.Id, item.InstagramId); foreach (InstagramFeed insFeed in lstFeeed) { ds.Tables[0].Rows.Add(insFeed.InstagramId, "instagram", "", "", "", insFeed.FeedDate, insFeed.FeedImageUrl, "", "", insFeed.FeedId, ""); } } } } return(ds); }
public DataSet bindMessagesIntoDataTable(Guid id) { //SocialProfilesRepository socioprofrepo = new SocialProfilesRepository(); //List<SocialProfile> alstprofiles = socioprofrepo.getAllSocialProfilesOfUser(user.Id); TeamMemberProfileRepository objTeamMemberProfileRepository = new TeamMemberProfileRepository(); List <TeamMemberProfile> alstprofiles = objTeamMemberProfileRepository.getAllTeamMemberProfilesOfTeam(id); // DataTableGenerator datatablegenerepo = new DataTableGenerator(); Messages mstable = new Messages(); DataSet ds = DataTableGenerator.CreateDataSetForTable(mstable); // DataSet ds = datatablegenerepo.CreateDataSetForTable(mstable); foreach (TeamMemberProfile item in alstprofiles) { if (item.ProfileType == "facebook") { FacebookFeedRepository fbfeedRepo = new FacebookFeedRepository(); List <FacebookFeed> alstfeedfb = fbfeedRepo.getUnreadMessages(item.ProfileId); foreach (FacebookFeed facebookmsg in alstfeedfb) { ds.Tables[0].Rows.Add(facebookmsg.ProfileId, "facebook", facebookmsg.FromId, facebookmsg.FromName, facebookmsg.FromProfileUrl, facebookmsg.FeedDate, facebookmsg.FeedDescription, facebookmsg.FbComment, facebookmsg.FbLike, facebookmsg.FeedId, facebookmsg.Type, facebookmsg.ReadStatus); } } else if (item.ProfileType == "twitter") { TwitterMessageRepository twtmsgrepo = new TwitterMessageRepository(); List <TwitterMessage> lstmsgtwtuser = twtmsgrepo.getUnreadMessages(item.ProfileId); foreach (TwitterMessage lst in lstmsgtwtuser) { ds.Tables[0].Rows.Add(lst.ProfileId, "twitter", lst.FromId, lst.FromScreenName, lst.FromProfileUrl, lst.MessageDate, lst.TwitterMsg, "", "", lst.MessageId, lst.Type, lst.ReadStatus); } } else if (item.ProfileType == "googleplus") { } } foreach (TeamMemberProfile item in alstprofiles) { if (item.ProfileType == "facebook") { try { //FacebookFeedRepository fbfeedrepo = new FacebookFeedRepository(); //List<FacebookFeed> alstfbmsgs = fbfeedrepo.getAllReadFacebookFeeds(user.Id, item.ProfileId); //foreach (FacebookFeed facebookmsg in alstfbmsgs) //{ // ds.Tables[0].Rows.Add(facebookmsg.ProfileId, "facebook", facebookmsg.FromId, facebookmsg.FromName, facebookmsg.FromProfileUrl, facebookmsg.FeedDate, facebookmsg.FeedDescription, facebookmsg.FbComment, facebookmsg.FbLike, facebookmsg.FeedId, facebookmsg.Type,facebookmsg.ReadStatus); //} facebookid += item.ProfileId + ","; } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } else if (item.ProfileType == "twitter") { try { //TwitterMessageRepository twtmsgrepo = new TwitterMessageRepository(); //List<TwitterMessage> lstmsgtwtuser = twtmsgrepo.getAllReadMessagesOfUser(user.Id, item.ProfileId); //foreach (TwitterMessage lst in lstmsgtwtuser) //{ // ds.Tables[0].Rows.Add(lst.ProfileId, "twitter", lst.FromId, lst.FromScreenName, lst.FromProfileUrl, lst.MessageDate, lst.TwitterMsg, "", "", lst.MessageId, lst.Type,lst.ReadStatus); //} twitterid += item.ProfileId + ","; } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } else if (item.ProfileType == "googleplus") { try { //GooglePlusActivitiesRepository objActRepo = new GooglePlusActivitiesRepository(); //List<GooglePlusActivities> lstmsggauser = objActRepo.getAllgoogleplusActivityOfUser(user.Id, item.ProfileId); //foreach (GooglePlusActivities lst in lstmsggauser) //{ // ds.Tables[0].Rows.Add(lst.GpUserId, "googleplus", lst.FromId, lst.FromUserName, lst.FromProfileImage, lst.PublishedDate, lst.Content, "", "", lst.ActivityId, "activities"); //} googleplusid += item.ProfileId + ","; } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } } if (facebookid != "") { facebookid = facebookid.Substring(0, facebookid.Length - 1); } if (twitterid != "") { twitterid = twitterid.Substring(0, twitterid.Length - 1); } if (googleplusid != "") { googleplusid = googleplusid.Substring(0, googleplusid.Length - 1); } FacebookFeedRepository fbfeedRepository = new FacebookFeedRepository(); List <FacebookFeed> alstfbmsgs = fbfeedRepository.getAllReadFbFeeds(facebookid); try { foreach (FacebookFeed facebookmsg in alstfbmsgs) { try { ds.Tables[0].Rows.Add(facebookmsg.ProfileId, "facebook", facebookmsg.FromId, facebookmsg.FromName, facebookmsg.FromProfileUrl, facebookmsg.FeedDate, facebookmsg.FeedDescription, facebookmsg.FbComment, facebookmsg.FbLike, facebookmsg.FeedId, facebookmsg.Type, facebookmsg.ReadStatus); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } TwitterMessageRepository twtmsgRepository = new TwitterMessageRepository(); List <TwitterMessage> lstmsgtwt = twtmsgRepository.getAlltwtMessagesOfUser(twitterid); try { foreach (TwitterMessage lst in lstmsgtwt) { try { ds.Tables[0].Rows.Add(lst.ProfileId, "twitter", lst.FromId, lst.FromScreenName, lst.FromProfileUrl, lst.MessageDate, lst.TwitterMsg, "", "", lst.MessageId, lst.Type, lst.ReadStatus); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } GooglePlusActivitiesRepository objActRepository = new GooglePlusActivitiesRepository(); List <GooglePlusActivities> lstmsggpl = objActRepository.getAllgplusOfUser(googleplusid); try { foreach (GooglePlusActivities lst in lstmsggpl) { try { ds.Tables[0].Rows.Add(lst.GpUserId, "googleplus", lst.FromId, lst.FromUserName, lst.FromProfileImage, lst.PublishedDate, lst.Content, "", "", lst.ActivityId, "activities"); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } return(ds); }
internal static IAutoGenerator ResolveGenerator(AutoGenerateContext context) { var type = context.GenerateType; // Need check if the type is an in/out parameter and adjusted accordingly if (type.IsByRef) { type = type.GetElementType(); } // Check if an expando object needs to generator // This actually means an existing dictionary needs to be populated if (ReflectionHelper.IsExpandoObject(type)) { return(new ExpandoObjectGenerator()); } // Do some type -> generator mapping if (type.IsArray) { type = type.GetElementType(); return(CreateGenericGenerator(typeof(ArrayGenerator <>), type)); } #if !NETSTANDARD1_3 if (DataTableGenerator.TryCreateGenerator(type, out var dataTableGenerator)) { return(dataTableGenerator); } if (DataSetGenerator.TryCreateGenerator(type, out var dataSetGenerator)) { return(dataSetGenerator); } #endif if (ReflectionHelper.IsEnum(type)) { return(CreateGenericGenerator(typeof(EnumGenerator <>), type)); } if (ReflectionHelper.IsNullable(type)) { type = ReflectionHelper.GetGenericArguments(type).Single(); return(CreateGenericGenerator(typeof(NullableGenerator <>), type)); } Type genericCollectionType = ReflectionHelper.GetGenericCollectionType(type); if (genericCollectionType != null) { // For generic types we need to interrogate the inner types var generics = ReflectionHelper.GetGenericArguments(genericCollectionType); if (ReflectionHelper.IsReadOnlyDictionary(genericCollectionType)) { var keyType = generics.ElementAt(0); var valueType = generics.ElementAt(1); return(CreateGenericGenerator(typeof(ReadOnlyDictionaryGenerator <,>), keyType, valueType)); } if (ReflectionHelper.IsDictionary(genericCollectionType)) { return(CreateDictionaryGenerator(generics)); } if (ReflectionHelper.IsList(genericCollectionType)) { var elementType = generics.Single(); return(CreateGenericGenerator(typeof(ListGenerator <>), elementType)); } if (ReflectionHelper.IsSet(genericCollectionType)) { var elementType = generics.Single(); return(CreateGenericGenerator(typeof(SetGenerator <>), elementType)); } if (ReflectionHelper.IsCollection(genericCollectionType)) { var elementType = generics.Single(); return(CreateGenericGenerator(typeof(ListGenerator <>), elementType)); } if (ReflectionHelper.IsEnumerable(genericCollectionType)) { // Not a full list type, we can't fake it if it's anything other than // the actual IEnumerable<T> interface itelf. if (type == genericCollectionType) { var elementType = generics.Single(); return(CreateGenericGenerator(typeof(EnumerableGenerator <>), elementType)); } } } // Resolve the generator from the type if (Generators.ContainsKey(type)) { return(Generators[type]); } return(CreateGenericGenerator(typeof(TypeGenerator <>), type)); }
private static IAutoGenerator ResolveGenerator(AutoGenerateContext context) { var type = context.GenerateType; // Need check if the type is an in/out parameter and adjusted accordingly if (type.IsByRef) { type = type.GetElementType(); } // Check if an expando object needs to generator // This actually means an existing dictionary needs to be populated if (ReflectionHelper.IsExpandoObject(type)) { return(new ExpandoObjectGenerator()); } // Do some type -> generator mapping if (type.IsArray) { type = type.GetElementType(); return(CreateGenericGenerator(typeof(ArrayGenerator <>), type)); } #if !NETSTANDARD1_3 if (DataTableGenerator.TryCreateGenerator(type, out var dataTableGenerator)) { return(dataTableGenerator); } if (DataSetGenerator.TryCreateGenerator(type, out var dataSetGenerator)) { return(dataSetGenerator); } #endif if (ReflectionHelper.IsEnum(type)) { return(CreateGenericGenerator(typeof(EnumGenerator <>), type)); } if (ReflectionHelper.IsGenericType(type)) { // For generic types we need to interrogate the inner types var generics = ReflectionHelper.GetGenericArguments(type); if (ReflectionHelper.IsReadOnlyDictionary(type)) { var keyType = generics.ElementAt(0); var valueType = generics.ElementAt(1); return(CreateGenericGenerator(typeof(ReadOnlyDictionaryGenerator <,>), keyType, valueType)); } if (ReflectionHelper.IsDictionary(type)) { return(CreateDicitonaryGenerator(generics)); } if (ReflectionHelper.IsSet(type)) { type = generics.Single(); return(CreateGenericGenerator(typeof(SetGenerator <>), type)); } if (ReflectionHelper.IsEnumerable(type)) { // If the type has more than one generic use a dictionary (hasn't been resolved by dictionary check above) // Example is a Dictionary<T, U>.KeyCollection if (generics.Count() == 2) { return(CreateDicitonaryGenerator(generics)); } // Otherwise it is a list type type = generics.Single(); return(CreateGenericGenerator(typeof(EnumerableGenerator <>), type)); } if (ReflectionHelper.IsNullable(type)) { type = generics.Single(); return(CreateGenericGenerator(typeof(NullableGenerator <>), type)); } } // Resolve the generator from the type if (Generators.ContainsKey(type)) { return(Generators[type]); } return(CreateGenericGenerator(typeof(TypeGenerator <>), type)); }