please help me understand what is happening here and should this work like that? I have a general list of objects from CMS:
For example List<MyCMS.Articles.Article> myArticles = articles.All;
Later, I list the contents of the list in JSON format (for the list of CI UI, a table).
Now one entry will include:
article.Title
article.Alias
article.Guid
article.Description
+
article.SeoProperties.TitleOverride
article.SeoProperties.H1Tag
article.StateProperties.IsActive
article.StateProperties.Channels
etc...
since you can see that the Article object has an additional class property - with common properties (used for other types of objects in CMS)
I also use a filter class that performs some filter operations with LINQ in the collection to return only articles in a specific channel to me, for example ...
, , JSON - "", , - , , , "" ( ) .. - DataContractJsonSerializer...
, JSON... , , ,
[DataMember (IsRequired = false, EmitDefaultValue = false)]... - - - ( !!) , = set value to "null" - null - - ... ?
- :
void Page_Load() {
MyCms.Content.Games games = new MyCms.Content.Games();
List<MyCms.Content.Games.Game> allGames = games.All;
MyCms.Content.Games games2 = new MyCms.Content.Games();
List<MyCms.Content.Games.Game> allGamesOther = games2.All;
Response.Write("Total games: " + allGames.Count + "<br />");
List<MyCms.Content.Games.Game> completelyUnrelatedOtherIsolated_but_notSureList = RemoveUnusedFields(allGamesOther);
List<MyCms.Content.Games.Game> gamesFiltered = allGames.Where(g=>g.GamingProperties.Software=="89070ef9-e115-4907-9996-6421e6013993").ToList();
Response.Write("Filtered games: " + gamesFiltered.Count + "<br /><br />");
}
private List<MyCms.Content.Games.Game> RemoveUnusedFields(List<MyCms.Content.Games.Game> games)
{
List<MyCms.Content.Games.Game> result = new List<MyCms.Content.Games.Game>();
if (games != null && games.Count > 0)
{
List<string> myContentProperties = MyCms.Utils.GetContentProperties(games[0]);
MyCms.PropertyReflector pF = new MyCms.PropertyReflector();
foreach (MyCms.Content.Games.Game contentItem in games)
{
MyCms.Content.Games.Game myNewGame = (MyCms.Content.Games.Game)contentItem.Clone();
myNewGame.Images = "wtf!";
pF.SetValue(myNewGame, "GamingProperties.Software", "");
result.Add(myNewGame);
}
}
return result;
}
" " ( , null, ):
private object GetDefaultValue(Type type)
{
if (type.IsValueType)
{
try
{
return Activator.CreateInstance(type);
}
catch {
return null;
}
}
return null;
}