/PixelsCMS/Pixels.Core/Pixels.cs

# · C# · 656 lines · 540 code · 115 blank · 1 comment · 96 complexity · 433b29eef4d236a17fa460368f81b0ea MD5 · raw file

  1. namespace Pixels.Core
  2. {
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Reflection;
  7. using Pixels.ContentTypeItems;
  8. using Pixels.ContentTypes;
  9. using Pixels.Core.Extentions;
  10. using Pixels.ExtentedListItems;
  11. using Pixels.ListItems;
  12. using System.Globalization;
  13. using Pixels.Core;
  14. using System.Collections;
  15. using System.Reflection.Emit;
  16. using System.Linq.Expressions;
  17. public static class PixelsHelper
  18. {
  19. private static IList<IContentType> ContentTypesCache = null;
  20. private static bool cacheEnabled = false;
  21. public static string[] PixelsVaildTypes = "Boolean,Byte,Char,DateTime,Decimal,Double,Int32,Int64,Int16,Single,String,Guid".Split(',');
  22. private static bool VaildPixelsCLRTypes(Type type)
  23. {
  24. bool vaild;
  25. switch (Type.GetTypeCode(type))
  26. {
  27. case TypeCode.Boolean:
  28. vaild = true;
  29. break;
  30. case TypeCode.Byte:
  31. vaild = false;
  32. break;
  33. case TypeCode.Char:
  34. vaild = true;
  35. break;
  36. case TypeCode.DBNull:
  37. vaild = false;
  38. break;
  39. case TypeCode.DateTime:
  40. vaild = true;
  41. break;
  42. case TypeCode.Decimal:
  43. vaild = true;
  44. break;
  45. case TypeCode.Double:
  46. vaild = true;
  47. break;
  48. case TypeCode.Empty:
  49. vaild = true;
  50. break;
  51. case TypeCode.Int16:
  52. vaild = true;
  53. break;
  54. case TypeCode.Int32:
  55. vaild = true;
  56. break;
  57. case TypeCode.Int64:
  58. vaild = true;
  59. break;
  60. case TypeCode.Object:
  61. {
  62. var genaric = type.GetGenericArguments();
  63. if (genaric.Count() > 0)
  64. {
  65. if (type.GetGenericTypeDefinition() == typeof(Nullable<>))
  66. {
  67. vaild = true;
  68. break;
  69. }
  70. }
  71. vaild = false;
  72. }
  73. break;
  74. case TypeCode.SByte:
  75. vaild = false;
  76. break;
  77. case TypeCode.Single:
  78. vaild = true;
  79. break;
  80. case TypeCode.String:
  81. vaild = true;
  82. break;
  83. case TypeCode.UInt16:
  84. vaild = true;
  85. break;
  86. case TypeCode.UInt32:
  87. vaild = true;
  88. break;
  89. case TypeCode.UInt64:
  90. vaild = true;
  91. break;
  92. default:
  93. vaild = false;
  94. break;
  95. }
  96. return vaild;
  97. }
  98. public static IContentType RegisterContentType<T>()
  99. {
  100. return RegisterContentType<T>(true);
  101. }
  102. private static IContentType RegisterContentType<T>(bool updateifExists)
  103. {
  104. T _contentTypeInstance = Activator.CreateInstance<T>();
  105. IContentType _contenttype = null;
  106. if (CustomAttributeHelper.HasCustomAttribute(_contentTypeInstance, "PixelContentType"))
  107. {
  108. _contenttype = new ContentType();
  109. _contenttype.ContentTypeID = Guid.NewGuid();
  110. _contenttype.Title = CustomAttributeHelper.GetCustomAttributeConstructorValue(_contentTypeInstance, "PixelContentType", 0);
  111. _contenttype.Description = CustomAttributeHelper.GetCustomAttributeConstructorValue(_contentTypeInstance, "PixelContentType", 1);
  112. _contenttype = ContentTypeAdapter.GetInstance().ContentTypeAddEdit(_contenttype, updateifExists);
  113. foreach (PropertyInfo item in _contentTypeInstance.GetType().GetProperties().Where(p => p.HasCustomAttribute("PixelContentTypeItem")))
  114. {
  115. if (VaildPixelsCLRTypes(item.PropertyType))
  116. {
  117. IContentTypeItem _contenttypeitem = new ContentTypeItem();
  118. _contenttypeitem.ContentTypeItemID = Guid.NewGuid();
  119. _contenttypeitem.ItemName = item.Name;
  120. _contenttypeitem.DisplayName = item.GetCustomAttributeConstructorValue("PixelContentTypeItem", 0);
  121. _contenttypeitem.Size = int.Parse(item.GetCustomAttributeConstructorValue("PixelContentTypeItem", 1));
  122. _contenttypeitem.DefaultValue = item.GetCustomAttributeNamedValue("PixelContentTypeItem", "DefaultValue");
  123. _contenttypeitem.ContentTypeID = _contenttype.ContentTypeID;
  124. _contenttypeitem.Type = item.PropertyType.Name;
  125. ContentTypeItemAdapter.GetInstance().ContentItemAddEdit(_contenttypeitem);
  126. }
  127. else
  128. {
  129. var genericType = item.PropertyType.GetGenericArguments();
  130. if (genericType.Count() == 0)
  131. {
  132. Type type = item.PropertyType;
  133. object subContentType = Activator.CreateInstance(type, null, null);
  134. foreach (var subcontenttypeitem in subContentType.GetType().GetProperties().Where(p => p.HasCustomAttribute("PixelContentTypeItem")))
  135. {
  136. IContentTypeItem _subcontenttypeitem = new ContentTypeItem();
  137. _subcontenttypeitem.ContentTypeItemID = Guid.NewGuid();
  138. _subcontenttypeitem.ItemName = item.Name + "." + subcontenttypeitem.Name;
  139. _subcontenttypeitem.DisplayName = subcontenttypeitem.GetCustomAttributeConstructorValue("PixelContentTypeItem", 0);
  140. _subcontenttypeitem.Size = int.Parse(subcontenttypeitem.GetCustomAttributeConstructorValue("PixelContentTypeItem", 1));
  141. _subcontenttypeitem.DefaultValue = subcontenttypeitem.GetCustomAttributeNamedValue("PixelContentTypeItem", "DefaultValue");
  142. _subcontenttypeitem.ContentTypeID = _contenttype.ContentTypeID;
  143. _subcontenttypeitem.Type = item.PropertyType.Name;
  144. ContentTypeItemAdapter.GetInstance().ContentItemAddEdit(_subcontenttypeitem);
  145. }
  146. }
  147. else
  148. {
  149. IContentTypeItem _subcontenttypeitem = new ContentTypeItem();
  150. _subcontenttypeitem.ContentTypeItemID = Guid.NewGuid();
  151. _subcontenttypeitem.ItemName = item.Name;
  152. _subcontenttypeitem.DisplayName = item.GetCustomAttributeConstructorValue("PixelContentTypeItem", 0);
  153. _subcontenttypeitem.Size = int.Parse(item.GetCustomAttributeConstructorValue("PixelContentTypeItem", 1));
  154. _subcontenttypeitem.DefaultValue = item.GetCustomAttributeNamedValue("PixelContentTypeItem", "DefaultValue");
  155. _subcontenttypeitem.ContentTypeID = _contenttype.ContentTypeID;
  156. _subcontenttypeitem.Type = item.PropertyType.Name;
  157. ContentTypeItemAdapter.GetInstance().ContentItemAddEdit(_subcontenttypeitem);
  158. }
  159. }
  160. }
  161. }
  162. FlashCache();
  163. return _contenttype;
  164. }
  165. public static IList<IContentType> FetchContentTypes()
  166. {
  167. if (ContentTypesCache == null)
  168. {
  169. if (cacheEnabled == true)
  170. ContentTypesCache = ContentTypeAdapter.GetInstance().ContentTypesFetch();
  171. else
  172. return ContentTypeAdapter.GetInstance().ContentTypesFetch();
  173. }
  174. return ContentTypesCache;
  175. }
  176. public static IContentType FetchContentType(Guid ContentTypeID)
  177. {
  178. if (ContentTypesCache == null)
  179. {
  180. ResetCache();
  181. return ContentTypeAdapter.GetInstance().ContentTypeFetch(ContentTypeID);
  182. }
  183. else
  184. return ContentTypesCache.Where(p => p.ContentTypeID == ContentTypeID).FirstOrDefault();
  185. }
  186. public static IContentType FetchContentType<T>()
  187. {
  188. string ContentTypeName = CustomAttributeHelper.GetCustomAttributeConstructorValue(Activator.CreateInstance<T>(), "PixelContentType", 0);
  189. if (ContentTypesCache == null)
  190. {
  191. ResetCache();
  192. return ContentTypeAdapter.GetInstance().ContentTypeFetch(ContentTypeName);
  193. }
  194. else
  195. return ContentTypesCache.Where(p => p.Title.ToLowerInvariant().Trim() == ContentTypeName.ToLowerInvariant().Trim()).FirstOrDefault();
  196. }
  197. public static IList<IContentTypeItem> FetchContentItems<T>()
  198. {
  199. return ContentTypeItemAdapter.GetInstance().ContentItemsFetchByContentTypeID(FetchContentType<T>().ContentTypeID);
  200. }
  201. public static void SaveListItem<T>(T listItem) where T : ListItem, new()
  202. {
  203. IContentType contentType = FetchContentType<T>();
  204. ListItem listitem = new ListItem();
  205. if (listItem.ListItemID.IsNull())
  206. {
  207. listitem.ListItemID = Guid.NewGuid();
  208. }
  209. else
  210. {
  211. listitem.ListItemID = listItem.ListItemID;
  212. }
  213. listitem.ContentTypeID = contentType.ContentTypeID;
  214. listitem.Title = listItem.Title;
  215. listitem.Description = listItem.Description;
  216. ListItemAdapter.GetInstance().ListItemAddEdit(listitem, true);
  217. foreach (var item in listItem.GetType().GetProperties().Where(p => p.HasCustomAttribute("PixelContentTypeItem")))
  218. {
  219. if (item.GetValue(listItem, null) != null)
  220. {
  221. if (VaildPixelsCLRTypes(item.PropertyType))
  222. {
  223. IExtentedListItem elistItem = new ExtentedListItem();
  224. elistItem.ExtentedListItemID = Guid.NewGuid();
  225. elistItem.ListItemID = listitem.ListItemID;
  226. elistItem.ItemName = item.Name;
  227. elistItem.Value = item.GetValue(listItem, null).ToString();
  228. elistItem.ContentTypeItemID = ContentTypeItemAdapter.GetInstance().ContentItemFetch(contentType.ContentTypeID, item.Name).ContentTypeItemID;
  229. ExtentedListItemAdapter.GetInstance().ExtentedListItemAddEdit(elistItem);
  230. }
  231. else
  232. {
  233. var Genarictype = item.PropertyType.GetGenericArguments();
  234. if (Genarictype.Count() == 0)
  235. {
  236. Type type = item.PropertyType;
  237. var objsubobject = Convert.ChangeType(item.GetValue(listItem, null), type);
  238. foreach (var subextentedlistitem in objsubobject.GetType().GetProperties().Where(p => p.HasCustomAttribute("PixelContentTypeItem")))
  239. {
  240. if (subextentedlistitem.GetValue(objsubobject, null) != null)
  241. {
  242. IExtentedListItem _subextentedlistitem = new ExtentedListItem();
  243. _subextentedlistitem.ExtentedListItemID = Guid.NewGuid();
  244. _subextentedlistitem.ListItemID = listitem.ListItemID;
  245. _subextentedlistitem.ItemName = objsubobject.GetType().Name + "." + subextentedlistitem.Name;
  246. _subextentedlistitem.ContentTypeItemID = ContentTypeItemAdapter.GetInstance().ContentItemFetch(contentType.ContentTypeID, _subextentedlistitem.ItemName).ContentTypeItemID;
  247. _subextentedlistitem.Value = subextentedlistitem.GetValue(objsubobject, null) == null ? "" : subextentedlistitem.GetValue(objsubobject, null).ToString();
  248. ExtentedListItemAdapter.GetInstance().ExtentedListItemAddEdit(_subextentedlistitem);
  249. }
  250. }
  251. }
  252. else
  253. {
  254. IEnumerable extentedlstitems = item.GetValue(listItem, null) as IEnumerable;
  255. IEnumerable<IExtentedListItem> dbExtentedListItems = ExtentedListItemAdapter.GetInstance().ExtentedListItemsFetchByListItemID(listitem.ListItemID).Where(p => p.ItemName.Contains(item.GetCustomAttributeConstructorValue("PixelContentTypeItem", 0)));
  256. IEnumerable<string> detetedbyUser = dbExtentedListItems.Select(p => p.Value.ToLower()).Except(extentedlstitems.Cast<string>());
  257. foreach (var deleteditem in detetedbyUser)
  258. {
  259. ExtentedListItemAdapter.GetInstance().ExtentedListItemDelete(dbExtentedListItems.Where(p => p.Value.ToLower() == deleteditem).FirstOrDefault().ExtentedListItemID);
  260. }
  261. int i = 1;
  262. foreach (var item2 in extentedlstitems)
  263. {
  264. IExtentedListItem _subextentedlistitem = new ExtentedListItem();
  265. _subextentedlistitem.ExtentedListItemID = Guid.NewGuid();
  266. _subextentedlistitem.ListItemID = listitem.ListItemID;
  267. _subextentedlistitem.ItemName = item.GetCustomAttributeConstructorValue("PixelContentTypeItem", 0) + i.ToString();
  268. _subextentedlistitem.ContentTypeItemID = ContentTypeItemAdapter.GetInstance().ContentItemFetch(contentType.ContentTypeID, item.Name).ContentTypeItemID;
  269. _subextentedlistitem.Value = item2.ToString();
  270. ExtentedListItemAdapter.GetInstance().ExtentedListItemAddEdit(_subextentedlistitem);
  271. i++;
  272. }
  273. }
  274. }
  275. }
  276. }
  277. FlashCache();
  278. }
  279. public static T FetchListItem<T>(Guid ListItemID) where T : IListItem
  280. {
  281. T listItem = default(T);
  282. ListItem objListItem = (ListItem)ListItemAdapter.GetInstance().ListItemFetch(ListItemID);
  283. if (objListItem != null)
  284. {
  285. listItem = Activator.CreateInstance<T>();
  286. listItem.ListItemID = objListItem.ListItemID;
  287. listItem.Title = objListItem.Title;
  288. listItem.Description = objListItem.Description;
  289. listItem.BaseListItemID = objListItem.BaseListItemID;
  290. ICollection<IExtentedListItem> ExtentedListItems = objListItem.FetchExtentedListItems();
  291. foreach (PropertyInfo item in listItem.GetType().GetProperties().Where(p => p.HasCustomAttribute("PixelContentTypeItem")))
  292. {
  293. IEnumerable<IExtentedListItem> SelectExtentedListItem = new List<IExtentedListItem>();
  294. if (VaildPixelsCLRTypes(item.PropertyType))
  295. {
  296. SelectExtentedListItem = ExtentedListItems.Where(p => p.ItemName == item.Name);
  297. if (SelectExtentedListItem.Count() == 0)
  298. continue;
  299. item.SetValue(listItem, Convert.ChangeType(SelectExtentedListItem.FirstOrDefault().Value, item.PropertyType), null);
  300. }
  301. else
  302. {
  303. var genaric = item.PropertyType.GetGenericArguments();
  304. if (genaric.Count() == 0)
  305. {
  306. SelectExtentedListItem = ExtentedListItems.Where(p => p.ItemName.StartsWith(item.Name));
  307. if (SelectExtentedListItem.Count() == 0)
  308. continue;
  309. Type type = item.PropertyType;
  310. var objsubobject = Activator.CreateInstance(type, null, null);
  311. item.SetValue(listItem, objsubobject, null);
  312. foreach (var subextentedlistitem in objsubobject.GetType().GetProperties().Where(p => p.HasCustomAttribute("PixelContentTypeItem")))
  313. {
  314. var obj = SelectExtentedListItem.Where(p => p.ItemName == item.Name + "." + subextentedlistitem.Name).FirstOrDefault();
  315. if (obj != null)
  316. {
  317. genaric = subextentedlistitem.PropertyType.GetGenericArguments();
  318. if (genaric.Count() == 0)
  319. subextentedlistitem.SetValue(objsubobject, Convert.ChangeType(obj.Value, subextentedlistitem.PropertyType), null);
  320. else
  321. subextentedlistitem.SetValue(objsubobject, Convert.ChangeType(obj.Value, Type.GetType(genaric[0].FullName)), null);
  322. }
  323. }
  324. }
  325. else
  326. {
  327. SelectExtentedListItem = ExtentedListItems.Where(p => p.ItemName.StartsWith(item.GetCustomAttributeConstructorValue("PixelContentTypeItem", 0)));
  328. if (SelectExtentedListItem.Count() == 0)
  329. continue;
  330. Type type = item.PropertyType.GetGenericArguments()[0];
  331. object objsubobject = null;
  332. if (item.PropertyType.GetGenericTypeDefinition() == typeof(List<>))
  333. {
  334. objsubobject = Activator.CreateInstance(typeof(List<>).MakeGenericType(typeof(string)), null, null);
  335. item.SetValue(listItem, objsubobject, null);
  336. }
  337. foreach (var selectedItem in SelectExtentedListItem)
  338. {
  339. objsubobject.GetType().GetMethod("Add").Invoke(objsubobject, new[] { selectedItem.Value });
  340. }
  341. }
  342. }
  343. }
  344. }
  345. return listItem;
  346. }
  347. public static List<T> FetchListItem<T>(Expression<Func<T, bool>> expression) where T : IListItem
  348. {
  349. IContentType contentType = FetchContentType<T>();
  350. string query = " ContentTypeID = '" + contentType.ContentTypeID + "' AND ";
  351. Parser(contentType.Title, ref query, expression);
  352. T listItem = default(T);
  353. List<T> tlist = new List<T>();
  354. foreach (var item1 in ListItemAdapter.GetInstance().ListItemsFetchQuery(query))
  355. {
  356. IListItem objListItem = item1;
  357. if (objListItem != null)
  358. {
  359. listItem = Activator.CreateInstance<T>();
  360. tlist.Add(listItem);
  361. listItem.ListItemID = objListItem.ListItemID;
  362. listItem.Title = objListItem.Title;
  363. listItem.Description = objListItem.Description;
  364. listItem.BaseListItemID = objListItem.BaseListItemID;
  365. ICollection<IExtentedListItem> ExtentedListItems = objListItem.FetchExtentedListItems();
  366. foreach (PropertyInfo item in listItem.GetType().GetProperties().Where(p => p.HasCustomAttribute("PixelContentTypeItem")))
  367. {
  368. IEnumerable<IExtentedListItem> SelectExtentedListItem = new List<IExtentedListItem>();
  369. if (VaildPixelsCLRTypes(item.PropertyType))
  370. {
  371. SelectExtentedListItem = ExtentedListItems.Where(p => p.ItemName == item.Name);
  372. if (SelectExtentedListItem.Count() == 0)
  373. continue;
  374. item.SetValue(listItem, Convert.ChangeType(SelectExtentedListItem.FirstOrDefault().Value, item.PropertyType), null);
  375. }
  376. else
  377. {
  378. var genaric = item.PropertyType.GetGenericArguments();
  379. if (genaric.Count() == 0)
  380. {
  381. SelectExtentedListItem = ExtentedListItems.Where(p => p.ItemName.StartsWith(item.Name));
  382. if (SelectExtentedListItem.Count() == 0)
  383. continue;
  384. Type type = item.PropertyType;
  385. var objsubobject = Activator.CreateInstance(type, null, null);
  386. item.SetValue(listItem, objsubobject, null);
  387. foreach (var subextentedlistitem in objsubobject.GetType().GetProperties().Where(p => p.HasCustomAttribute("PixelContentTypeItem")))
  388. {
  389. var obj = SelectExtentedListItem.Where(p => p.ItemName == item.Name + "." + subextentedlistitem.Name).FirstOrDefault();
  390. if (obj != null)
  391. {
  392. genaric = subextentedlistitem.PropertyType.GetGenericArguments();
  393. if (genaric.Count() == 0)
  394. subextentedlistitem.SetValue(objsubobject, Convert.ChangeType(obj.Value, subextentedlistitem.PropertyType), null);
  395. else
  396. subextentedlistitem.SetValue(objsubobject, Convert.ChangeType(obj.Value, Type.GetType(genaric[0].FullName)), null);
  397. }
  398. }
  399. }
  400. else
  401. {
  402. SelectExtentedListItem = ExtentedListItems.Where(p => p.ItemName.StartsWith(item.GetCustomAttributeConstructorValue("PixelContentTypeItem", 0)));
  403. if (SelectExtentedListItem.Count() == 0)
  404. continue;
  405. Type type = item.PropertyType.GetGenericArguments()[0];
  406. object objsubobject = null;
  407. if (item.PropertyType.GetGenericTypeDefinition() == typeof(List<>))
  408. {
  409. objsubobject = Activator.CreateInstance(typeof(List<>).MakeGenericType(typeof(string)), null, null);
  410. item.SetValue(listItem, objsubobject, null);
  411. }
  412. foreach (var selectedItem in SelectExtentedListItem)
  413. {
  414. objsubobject.GetType().GetMethod("Add").Invoke(objsubobject, new[] { selectedItem.Value });
  415. }
  416. }
  417. }
  418. }
  419. }
  420. }
  421. return tlist;
  422. }
  423. private static void Parser(string contenttype, ref string query, Expression expression)
  424. {
  425. switch (expression.NodeType)
  426. {
  427. case ExpressionType.Lambda:
  428. LambdaExpression lambdaExpr = (LambdaExpression)expression;
  429. Parser(contenttype, ref query, lambdaExpr.Body);
  430. break;
  431. case ExpressionType.Constant:
  432. ConstantExpression constExpr = (ConstantExpression)expression;
  433. if (Type.GetTypeCode(constExpr.Type) == TypeCode.Int16 || Type.GetTypeCode(constExpr.Type) == TypeCode.Int32 || Type.GetTypeCode(constExpr.Type) == TypeCode.Int64)
  434. query += constExpr.Value;
  435. else
  436. query += " '" + constExpr.Value + "') ";
  437. break;
  438. case ExpressionType.Parameter:
  439. ParameterExpression paramExpr = (ParameterExpression)expression;
  440. Console.WriteLine(paramExpr.Type.Name);
  441. break;
  442. case ExpressionType.AndAlso:
  443. case ExpressionType.OrElse:
  444. case ExpressionType.Equal:
  445. case ExpressionType.GreaterThan:
  446. case ExpressionType.GreaterThanOrEqual:
  447. case ExpressionType.LessThan:
  448. case ExpressionType.LessThanOrEqual:
  449. BinaryExpression binExpr = (BinaryExpression)expression;
  450. Parser(contenttype, ref query, binExpr.Left);
  451. if (expression.NodeType == ExpressionType.AndAlso)
  452. {
  453. if (query.Contains("ItemName"))
  454. {
  455. Console.WriteLine(" OR ");
  456. query += " OR ";
  457. }
  458. else
  459. {
  460. Console.WriteLine(" AND ");
  461. query += " AND ";
  462. }
  463. }
  464. if (expression.NodeType == ExpressionType.OrElse)
  465. {
  466. Console.WriteLine(" OR ");
  467. query += " OR ";
  468. }
  469. if (expression.NodeType == ExpressionType.Equal)
  470. {
  471. Console.WriteLine("=");
  472. query += " = ";
  473. }
  474. if (expression.NodeType == ExpressionType.GreaterThan)
  475. {
  476. Console.WriteLine(">");
  477. query += " > ";
  478. }
  479. if (expression.NodeType == ExpressionType.GreaterThanOrEqual)
  480. {
  481. Console.WriteLine(">=");
  482. query += " >= ";
  483. }
  484. if (expression.NodeType == ExpressionType.LessThan)
  485. {
  486. Console.WriteLine("<");
  487. query += " < ";
  488. }
  489. if (expression.NodeType == ExpressionType.LessThanOrEqual)
  490. {
  491. Console.WriteLine("<=");
  492. query += " <= ";
  493. }
  494. Parser(contenttype, ref query, binExpr.Right);
  495. break;
  496. case ExpressionType.MemberAccess:
  497. MemberExpression memberExpr = (MemberExpression)expression;
  498. Console.WriteLine(memberExpr.Member.Name);
  499. if (memberExpr.Member.Name == "Title" || memberExpr.Member.Name == "Description")
  500. {
  501. query += "(" + memberExpr.Member.Name;
  502. }
  503. else
  504. {
  505. if (memberExpr.Member.DeclaringType.Name == contenttype)
  506. {
  507. query += " (ItemName = '" + memberExpr.Member.Name + "' AND Value ";
  508. Parser(contenttype, ref query, memberExpr.Expression);
  509. }
  510. else
  511. {
  512. query += " (ItemName = '" + memberExpr.Member.DeclaringType.Name + "." + memberExpr.Member.Name + "' AND Value ";
  513. //Parser(contenttype, ref query, memberExpr.Expression);
  514. }
  515. }
  516. break;
  517. default:
  518. Console.WriteLine();
  519. Console.WriteLine("{0} {1}", expression.NodeType, expression.Type.Name);
  520. break;
  521. }
  522. }
  523. public static void LoadCache()
  524. {
  525. cacheEnabled = true;
  526. PixelsHelper.FetchContentTypes();
  527. }
  528. private static void ResetCache()
  529. {
  530. if (cacheEnabled == true)
  531. {
  532. PixelsHelper.FetchContentTypes();
  533. }
  534. }
  535. public static void FlashCache()
  536. {
  537. ContentTypesCache = null;
  538. cacheEnabled = false;
  539. }
  540. }
  541. }