PageRenderTime 49ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/library/Library/CSObjectGeneric.cs

https://bitbucket.org/digitalizarte/coolstorage
C# | 1590 lines | 822 code | 204 blank | 564 comment | 60 complexity | a834b17e8baeb3206a5835b8ef004aed MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. #region License
  2. //=============================================================================
  3. // Vici CoolStorage - .NET Object Relational Mapping Library
  4. //
  5. // Copyright (c) 2004-2009 Philippe Leybaert
  6. //
  7. // Permission is hereby granted, free of charge, to any person obtaining a copy
  8. // of this software and associated documentation files (the "Software"), to deal
  9. // in the Software without restriction, including without limitation the rights
  10. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  11. // copies of the Software, and to permit persons to whom the Software is
  12. // furnished to do so, subject to the following conditions:
  13. //
  14. // The above copyright notice and this permission notice shall be included in
  15. // all copies or substantial portions of the Software.
  16. //
  17. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  18. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  20. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  21. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  22. // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  23. // IN THE SOFTWARE.
  24. //=============================================================================
  25. #endregion
  26. using System;
  27. using Vici.Core;
  28. using System.Reflection;
  29. namespace Vici.CoolStorage
  30. {
  31. public delegate void ObjectEventHandler<T>(T sender, EventArgs e);
  32. public delegate void ObjectWriteEventHandler<T>(T sender, ObjectWriteEventArgs e);
  33. public delegate void ObjectDeleteEventHandler<T>(T sender, ObjectDeleteEventArgs e);
  34. public delegate void FieldChangedEventHandler<T>(T sender, FieldChangedEventArgs e);
  35. public abstract class CSObject<T> : CSObject
  36. where T : CSObject<T>
  37. {
  38. public event ObjectEventHandler<T> ObjectReading;
  39. public event ObjectEventHandler<T> ObjectRead;
  40. public event ObjectWriteEventHandler<T> ObjectSaving;
  41. public event ObjectEventHandler<T> ObjectSaved;
  42. public event ObjectWriteEventHandler<T> ObjectUpdating;
  43. public event ObjectEventHandler<T> ObjectUpdated;
  44. public event ObjectWriteEventHandler<T> ObjectCreating;
  45. public event ObjectEventHandler<T> ObjectCreated;
  46. public event ObjectDeleteEventHandler<T> ObjectDeleting;
  47. public event ObjectEventHandler<T> ObjectDeleted;
  48. public static event ObjectEventHandler<T> AnyObjectReading;
  49. public static event ObjectEventHandler<T> AnyObjectRead;
  50. public static event ObjectWriteEventHandler<T> AnyObjectUpdating;
  51. public static event ObjectEventHandler<T> AnyObjectUpdated;
  52. public static event ObjectWriteEventHandler<T> AnyObjectSaving;
  53. public static event ObjectEventHandler<T> AnyObjectSaved;
  54. public static event ObjectWriteEventHandler<T> AnyObjectCreating;
  55. public static event ObjectEventHandler<T> AnyObjectCreated;
  56. public static event ObjectDeleteEventHandler<T> AnyObjectDeleting;
  57. public static event ObjectEventHandler<T> AnyObjectDeleted;
  58. /// <summary>
  59. /// Creates a new object
  60. /// </summary>
  61. /// <returns>The newly created object</returns>
  62. public static T New()
  63. {
  64. return CSFactory.New<T>();
  65. }
  66. /// <summary>
  67. /// Reads the using unique field.
  68. /// </summary>
  69. /// <param name="fieldName">Name of the field.</param>
  70. /// <param name="value">The value.</param>
  71. /// <returns></returns>
  72. public static T ReadUsingUniqueField(string fieldName, object value)
  73. {
  74. T obj = New();
  75. if (obj.ReadUsingUniqueKey(fieldName, value))
  76. return obj;
  77. else
  78. return null;
  79. }
  80. public static CSObject<T> Read(CSPrimaryKey pKey)
  81. {
  82. return CSFactory.Read<T>(pKey);
  83. }
  84. public static CSObject<T> Read(CSUnitOfWork UofW, CSPrimaryKey pKey)
  85. {
  86. return CSFactory.Read<T>(pKey, UofW);
  87. }
  88. public static T ReadFirst(CSFilter filter)
  89. {
  90. CSList<T> objects = new CSList<T>(filter);
  91. objects.MaxRecords = 1;
  92. if (objects.Count < 1)
  93. return null;
  94. else
  95. return objects[0];
  96. }
  97. /// <summary>
  98. /// BER: Devuelve en base a una entity y su PK el objeto fresco desde la base
  99. /// </summary>
  100. /// <param name="source"></param>
  101. /// <returns></returns>
  102. public static T ReadFresh(T source){
  103. CSFilter f = new CSFilter("1=1");
  104. CSParameterCollection pcol = new CSParameterCollection();
  105. foreach (CSSchemaColumn c in source.Schema.KeyColumns) {
  106. object val = source.GetField(c.MappedField.Name);
  107. if (val == null)
  108. throw new Exception("[VICI.ReadFresh] Los valores de la PK no pueden ser null para filtrar.");
  109. CSParameter parameter = pcol.Add();
  110. //parameter.Value = val;
  111. f = f.And(String.Format("{0} = {1}", c.MappedField.Name, parameter.Name), parameter.Name, val);
  112. //f.Parameters.Add(c.Name, source.GetField(c.Name));
  113. }
  114. return ReadFirst(f);
  115. }
  116. /// <summary>
  117. /// TODO Completar documentación
  118. /// </summary>
  119. /// <param name="filter"></param>
  120. /// <returns></returns>
  121. public static T ReadFirst(string filter)
  122. {
  123. return ReadFirst(new CSFilter(filter));
  124. }
  125. public static T ReadFirst(string filter, CSParameterCollection parameters)
  126. {
  127. return ReadFirst(new CSFilter(filter, parameters));
  128. }
  129. public static T ReadFirst(string filter, params CSParameter[] parameters)
  130. {
  131. return ReadFirst(new CSFilter(filter, parameters));
  132. }
  133. public static T ReadFirst(string filter, object parameters)
  134. {
  135. return ReadFirst(new CSFilter(filter, parameters));
  136. }
  137. public static T ReadFirst(string filter, string paramName1, object paramValue1)
  138. {
  139. return ReadFirst(new CSFilter(filter, paramName1, paramValue1));
  140. }
  141. public static T ReadFirst(string filter, string paramName1, object paramValue1, string paramName2, object paramValue2)
  142. {
  143. return ReadFirst(new CSFilter(filter,paramName1, paramValue1, paramName2, paramValue2));
  144. }
  145. public static T ReadFirst(string filter, string paramName1, object paramValue1, string paramName2, object paramValue2, string paramName3, object paramValue3)
  146. {
  147. return ReadFirst(new CSFilter(filter, paramName1, paramValue1, paramName2, paramValue2, paramName3, paramValue3));
  148. }
  149. public static int Count()
  150. {
  151. return List().CountFast;
  152. }
  153. public static int Count(CSFilter filter)
  154. {
  155. return List(filter).CountFast;
  156. }
  157. public static int Count(string filter)
  158. {
  159. return Count(new CSFilter(filter));
  160. }
  161. public static int Count(string filter, CSParameterCollection parameters)
  162. {
  163. return Count(new CSFilter(filter, parameters));
  164. }
  165. public static int Count(string filter, params CSParameter[] parameters)
  166. {
  167. return Count(new CSFilter(filter, parameters));
  168. }
  169. public static int Count(string filter, object parameters)
  170. {
  171. return Count(new CSFilter(filter, parameters));
  172. }
  173. public static int Count(string filter, string paramName1, object paramValue1)
  174. {
  175. return Count(new CSFilter(filter, paramName1, paramValue1));
  176. }
  177. public static int Count(string filter, string paramName1, object paramValue1, string paramName2, object paramValue2)
  178. {
  179. return Count(new CSFilter(filter, paramName1, paramValue1, paramName2, paramValue2));
  180. }
  181. public static int Count(string filter, string paramName1, object paramValue1, string paramName2, object paramValue2, string paramName3, object paramValue3)
  182. {
  183. return Count(new CSFilter(filter, paramName1, paramValue1, paramName2, paramValue2, paramName3, paramValue3));
  184. }
  185. public static CSList<T> All()
  186. {
  187. return List();
  188. }
  189. public static CSList<T> List()
  190. {
  191. return new CSList<T>();
  192. }
  193. public static CSList<T> List(string filter)
  194. {
  195. return new CSList<T>(filter);
  196. }
  197. public static CSList<T> List(CSFilter filter)
  198. {
  199. return new CSList<T>(filter);
  200. }
  201. public static CSList<T> List(string filter, CSParameterCollection parameters)
  202. {
  203. return new CSList<T>(filter,parameters);
  204. }
  205. public static CSList<T> List(string filter, params CSParameter[] parameters)
  206. {
  207. return new CSList<T>(filter, parameters);
  208. }
  209. public static CSList<T> List(string filter, object parameters)
  210. {
  211. return new CSList<T>(filter, parameters);
  212. }
  213. public static CSList<T> List(string filter, string paramName, object paramValue)
  214. {
  215. return new CSList<T>(filter,paramName,paramValue);
  216. }
  217. public static CSList<T> List(string filter, string paramName1, object paramValue1, string paramName2, object paramValue2)
  218. {
  219. return new CSList<T>(filter, paramName1, paramValue1, paramName2, paramValue2);
  220. }
  221. public static CSList<T> List(string filter, string paramName1, object paramValue1, string paramName2, object paramValue2, string paramName3, object paramValue3)
  222. {
  223. return new CSList<T>(filter, paramName1, paramValue1, paramName2, paramValue2, paramName3, paramValue3);
  224. }
  225. public static CSList<T> OrderedList(string orderBy)
  226. {
  227. CSList<T> list = List();
  228. list.OrderBy = orderBy;
  229. return list;
  230. }
  231. public static CSList<T> OrderedList(string orderBy, CSFilter filter)
  232. {
  233. CSList<T> list = List(filter);
  234. list.OrderBy = orderBy;
  235. return list;
  236. }
  237. public static CSList<T> OrderedList(string orderBy, string filter)
  238. {
  239. CSList<T> list = List(filter);
  240. list.OrderBy = orderBy;
  241. return list;
  242. }
  243. public static CSList<T> OrderedList(string orderBy, string filter, CSParameterCollection parameters)
  244. {
  245. CSList<T> list = List(filter,parameters);
  246. list.OrderBy = orderBy;
  247. return list;
  248. }
  249. public static CSList<T> OrderedList(string orderBy, string filter, params CSParameter[] parameters)
  250. {
  251. CSList<T> list = List(filter, parameters);
  252. list.OrderBy = orderBy;
  253. return list;
  254. }
  255. public static CSList<T> OrderedList(string orderBy, string filter, object parameters)
  256. {
  257. CSList<T> list = List(filter, parameters);
  258. list.OrderBy = orderBy;
  259. return list;
  260. }
  261. public static CSList<T> OrderedList(string orderBy, string filter, string paramName1, object paramValue1)
  262. {
  263. CSList<T> list = List(filter, paramName1, paramValue1);
  264. list.OrderBy = orderBy;
  265. return list;
  266. }
  267. public static CSList<T> OrderedList(string orderBy, string filter, string paramName1, object paramValue1, string paramName2, object paramValue2)
  268. {
  269. CSList<T> list = List(filter, paramName1, paramValue1, paramName2, paramValue2);
  270. list.OrderBy = orderBy;
  271. return list;
  272. }
  273. public static CSList<T> OrderedList(string orderBy, string filter, string paramName1, object paramValue1, string paramName2, object paramValue2, string paramName3, object paramValue3)
  274. {
  275. CSList<T> list = List(filter, paramName1, paramValue1, paramName2, paramValue2, paramName3, paramValue3);
  276. list.OrderBy = orderBy;
  277. return list;
  278. }
  279. public static object GetScalar(string fieldName, string orderBy)
  280. {
  281. return GetScalar(fieldName, null, CSAggregate.None, CSFilter.None, orderBy);
  282. }
  283. public static TScalar GetScalar<TScalar>(string fieldName, string orderBy)
  284. {
  285. return GetScalar<TScalar>(fieldName, null, CSAggregate.None, CSFilter.None, orderBy);
  286. }
  287. public static object GetScalar(string fieldName, string orderBy, string filterExpression)
  288. {
  289. return GetScalar(fieldName, orderBy, filterExpression, null, orderBy);
  290. }
  291. public static TScalar GetScalar<TScalar>(string fieldName, string orderBy, string filterExpression)
  292. {
  293. return GetScalar<TScalar>(fieldName, orderBy, filterExpression, null, orderBy);
  294. }
  295. public static object GetScalar(string fieldName, string orderBy, string filterExpression, string paramName, object paramValue)
  296. {
  297. return GetScalar(fieldName, orderBy , filterExpression, new CSParameterCollection(paramName, paramValue));
  298. }
  299. public static TScalar GetScalar<TScalar>(string fieldName, string orderBy, string filterExpression, object parameters)
  300. {
  301. return GetScalar<TScalar>(fieldName, orderBy, filterExpression, new CSParameterCollection(parameters));
  302. }
  303. public static TScalar GetScalar<TScalar>(string fieldName, string orderBy, string filterExpression, string paramName, object paramValue)
  304. {
  305. return GetScalar<TScalar>(fieldName, orderBy, filterExpression, new CSParameterCollection(paramName, paramValue));
  306. }
  307. public static object GetScalar(string fieldName, string orderBy, string filterExpression, CSParameterCollection filterParameters)
  308. {
  309. return GetScalar(fieldName, null, orderBy, new CSFilter(filterExpression, filterParameters));
  310. }
  311. public static TScalar GetScalar<TScalar>(string fieldName, string orderBy, string filterExpression, CSParameterCollection filterParameters)
  312. {
  313. return GetScalar<TScalar>(fieldName, null, orderBy, new CSFilter(filterExpression, filterParameters));
  314. }
  315. internal static object GetScalar(string fieldName, string tableAlias, string orderBy, CSFilter queryFilter)
  316. {
  317. return GetScalar(fieldName, tableAlias, CSAggregate.None, queryFilter, orderBy);
  318. }
  319. internal static TScalar GetScalar<TScalar>(string fieldName, string tableAlias, string orderBy, CSFilter queryFilter)
  320. {
  321. return GetScalar<TScalar>(fieldName, tableAlias, CSAggregate.None, queryFilter, orderBy);
  322. }
  323. public static object GetScalar(string fieldName, CSAggregate aggregate)
  324. {
  325. return GetScalar(fieldName, null, aggregate, CSFilter.None);
  326. }
  327. public static TScalar GetScalar<TScalar>(string fieldName, CSAggregate aggregate)
  328. {
  329. return GetScalar<TScalar>(fieldName, null, aggregate, CSFilter.None);
  330. }
  331. public static object GetScalar(string fieldName, CSAggregate aggregate, string filterExpression)
  332. {
  333. return GetScalar(fieldName, aggregate, filterExpression, CSParameterCollection.Empty);
  334. }
  335. public static TScalar GetScalar<TScalar>(string fieldName, CSAggregate aggregate, string filterExpression)
  336. {
  337. return GetScalar<TScalar>(fieldName, aggregate, filterExpression, CSParameterCollection.Empty);
  338. }
  339. public static object GetScalar(string fieldName, CSAggregate aggregate, string filterExpression, object parameters)
  340. {
  341. return GetScalar(fieldName, aggregate, filterExpression, new CSParameterCollection(parameters));
  342. }
  343. public static object GetScalar(string fieldName, CSAggregate aggregate, string filterExpression, string paramName, object paramValue)
  344. {
  345. return GetScalar(fieldName, aggregate, filterExpression, new CSParameterCollection(paramName, paramValue));
  346. }
  347. public static TScalar GetScalar<TScalar>(string fieldName, CSAggregate aggregate, string filterExpression, string paramName, object paramValue)
  348. {
  349. return GetScalar<TScalar>(fieldName, aggregate, filterExpression, new CSParameterCollection(paramName, paramValue));
  350. }
  351. public static object GetScalar(string fieldName, CSAggregate aggregate, string filterExpression, string paramName1, object paramValue1, string paramName2, object paramValue2)
  352. {
  353. return GetScalar(fieldName, aggregate, filterExpression, new CSParameterCollection(paramName1, paramValue1, paramName2, paramValue2));
  354. }
  355. public static TScalar GetScalar<TScalar>(string fieldName, CSAggregate aggregate, string filterExpression, string paramName1, object paramValue1, string paramName2, object paramValue2)
  356. {
  357. return GetScalar<TScalar>(fieldName, aggregate, filterExpression, new CSParameterCollection(paramName1, paramValue1, paramName2, paramValue2));
  358. }
  359. public static object GetScalar(string fieldName, CSAggregate aggregate, string filterExpression, string paramName1, object paramValue1, string paramName2, object paramValue2, string paramName3, object paramValue3)
  360. {
  361. return GetScalar(fieldName, aggregate, filterExpression, new CSParameterCollection(paramName1, paramValue1, paramName2, paramValue2, paramName3, paramValue3));
  362. }
  363. public static TScalar GetScalar<TScalar>(string fieldName, CSAggregate aggregate, string filterExpression, string paramName1, object paramValue1, string paramName2, object paramValue2, string paramName3, object paramValue3)
  364. {
  365. return GetScalar<TScalar>(fieldName, aggregate, filterExpression, new CSParameterCollection(paramName1, paramValue1, paramName2, paramValue2, paramName3, paramValue3));
  366. }
  367. public static object GetScalar(string fieldName, CSAggregate aggregate, string filterExpression, CSParameterCollection filterParameters)
  368. {
  369. return GetScalar(fieldName, null, aggregate, new CSFilter(filterExpression, filterParameters));
  370. }
  371. public static TScalar GetScalar<TScalar>(string fieldName, CSAggregate aggregate, string filterExpression, CSParameterCollection filterParameters)
  372. {
  373. return GetScalar<TScalar>(fieldName, null, aggregate, new CSFilter(filterExpression, filterParameters));
  374. }
  375. internal static object GetScalar(string fieldName, string tableAlias, CSAggregate aggregate, CSFilter queryFilter)
  376. {
  377. return GetScalar(fieldName, tableAlias, aggregate, queryFilter, null);
  378. }
  379. internal static TScalar GetScalar<TScalar>(string fieldName, string tableAlias, CSAggregate aggregate, CSFilter queryFilter)
  380. {
  381. return GetScalar<TScalar>(fieldName, tableAlias, aggregate, queryFilter, null);
  382. }
  383. private static TReturn GetScalar<TReturn>(string fieldName, string tableAlias, CSAggregate aggregate, CSFilter queryFilter, string orderBy)
  384. {
  385. return GetScalar(fieldName, tableAlias, aggregate, queryFilter, orderBy).Convert<TReturn>();
  386. }
  387. private static object GetScalar(string fieldName, string tableAlias, CSAggregate aggregate, CSFilter queryFilter , string orderBy)
  388. {
  389. CSSchema schema = CSSchema.Get(typeof(T));
  390. if (tableAlias == null)
  391. tableAlias = CSNameGenerator.NextTableAlias;
  392. if (orderBy == null)
  393. orderBy = "";
  394. string aggregateExpr = null;
  395. int maxRows = 0;
  396. switch (aggregate)
  397. {
  398. case CSAggregate.None : aggregateExpr = "{0}"; maxRows = 1; break;
  399. case CSAggregate.Sum : aggregateExpr = "sum({0})"; break;
  400. case CSAggregate.SumDistinct : aggregateExpr = "sum(distinct {0})"; break;
  401. case CSAggregate.Count : aggregateExpr = "count(*)"; break;
  402. case CSAggregate.CountDistinct: aggregateExpr = "count(distinct {0})"; break;
  403. case CSAggregate.Avg : aggregateExpr = "avg({0})"; break;
  404. case CSAggregate.AvgDistinct : aggregateExpr = "avg(distinct {0})"; break;
  405. case CSAggregate.Max : aggregateExpr = "max({0})"; break;
  406. case CSAggregate.Min : aggregateExpr = "min({0})"; break;
  407. }
  408. CSJoinList joins = new CSJoinList();
  409. if (fieldName != "*")
  410. fieldName = CSExpressionParser.ParseFilter(fieldName, schema, tableAlias, joins);
  411. string whereFilter = CSExpressionParser.ParseFilter(queryFilter.Expression, schema, tableAlias, joins);
  412. orderBy = CSExpressionParser.ParseOrderBy(orderBy, schema, tableAlias, joins);
  413. string sqlQuery = schema.DB.BuildSelectSQL(schema.TableName, tableAlias, new[] { String.Format(aggregateExpr, fieldName) }, null, joins.BuildJoinExpressions(), whereFilter, orderBy, 1, maxRows, false, false);
  414. return schema.DB.GetScalar(sqlQuery, queryFilter.Parameters);
  415. }
  416. internal override void Fire_ObjectRead()
  417. {
  418. if (ObjectRead != null)
  419. ObjectRead((T)this, EventArgs.Empty);
  420. if (AnyObjectRead != null)
  421. AnyObjectRead((T)this, EventArgs.Empty);
  422. }
  423. internal override void Fire_ObjectReading()
  424. {
  425. if (ObjectReading != null)
  426. ObjectReading((T)this, new EventArgs());
  427. if (AnyObjectReading != null)
  428. AnyObjectReading((T)this, new EventArgs());
  429. }
  430. internal override void Fire_ObjectUpdating(ref bool cancel)
  431. {
  432. if (!IsDirty)
  433. return;
  434. if (ObjectUpdating != null)
  435. {
  436. ObjectWriteEventArgs eventArgs = new ObjectWriteEventArgs();
  437. ObjectUpdating((T) this, eventArgs);
  438. if (eventArgs.CancelWrite)
  439. cancel = true;
  440. }
  441. if (AnyObjectUpdating != null)
  442. {
  443. ObjectWriteEventArgs eventArgs = new ObjectWriteEventArgs();
  444. AnyObjectUpdating((T)this, eventArgs);
  445. if (eventArgs.CancelWrite)
  446. cancel = true;
  447. }
  448. }
  449. internal override void Fire_ObjectUpdated()
  450. {
  451. if (ObjectUpdated != null)
  452. ObjectUpdated((T) this, new EventArgs());
  453. if (AnyObjectUpdated != null)
  454. AnyObjectUpdated((T)this, new EventArgs());
  455. }
  456. internal override void Fire_ObjectSaving(ref bool cancel)
  457. {
  458. if (ObjectSaving != null)
  459. {
  460. ObjectWriteEventArgs eventArgs = new ObjectWriteEventArgs();
  461. ObjectSaving((T)this, eventArgs);
  462. if (eventArgs.CancelWrite)
  463. cancel = true;
  464. }
  465. if (AnyObjectSaving != null)
  466. {
  467. ObjectWriteEventArgs eventArgs = new ObjectWriteEventArgs();
  468. AnyObjectSaving((T)this, eventArgs);
  469. if (eventArgs.CancelWrite)
  470. cancel = true;
  471. }
  472. }
  473. internal override void Fire_ObjectSaved()
  474. {
  475. if (ObjectSaved != null)
  476. ObjectSaved((T)this, new EventArgs());
  477. if (AnyObjectSaved != null)
  478. AnyObjectSaved((T)this, new EventArgs());
  479. }
  480. internal override void Fire_ObjectCreated()
  481. {
  482. if (ObjectCreated != null)
  483. ObjectCreated((T) this, new EventArgs());
  484. if (AnyObjectCreated != null)
  485. AnyObjectCreated((T)this, new EventArgs());
  486. }
  487. internal override void Fire_ObjectCreating(ref bool cancel)
  488. {
  489. if (ObjectCreating != null)
  490. {
  491. ObjectWriteEventArgs e = new ObjectWriteEventArgs();
  492. ObjectCreating((T) this, e);
  493. if (e.CancelWrite)
  494. cancel = true;
  495. }
  496. if (AnyObjectCreating != null)
  497. {
  498. ObjectWriteEventArgs e = new ObjectWriteEventArgs();
  499. AnyObjectCreating((T)this, e);
  500. if (e.CancelWrite)
  501. cancel = true;
  502. }
  503. }
  504. internal override void Fire_ObjectDeleting(ref bool cancel)
  505. {
  506. if (ObjectDeleting != null)
  507. {
  508. ObjectDeleteEventArgs e = new ObjectDeleteEventArgs();
  509. ObjectDeleting((T) this, e);
  510. if (e.CancelDelete)
  511. cancel = true;
  512. }
  513. if (AnyObjectDeleting != null)
  514. {
  515. ObjectDeleteEventArgs e = new ObjectDeleteEventArgs();
  516. AnyObjectDeleting((T)this, e);
  517. if (e.CancelDelete)
  518. cancel = true;
  519. }
  520. }
  521. internal override void Fire_ObjectDeleted()
  522. {
  523. if (ObjectDeleted != null)
  524. ObjectDeleted((T) this, new EventArgs());
  525. if (AnyObjectDeleted != null)
  526. AnyObjectDeleted((T)this, new EventArgs());
  527. }
  528. }
  529. /// <summary>
  530. /// TODO Completar documentación
  531. /// </summary>
  532. /// <typeparam name="TObject"></typeparam>
  533. /// <typeparam name="TKey1"></typeparam>
  534. /// <typeparam name="TKey2"></typeparam>
  535. /// <typeparam name="TKey3"></typeparam>
  536. /// <typeparam name="TKey4"></typeparam>
  537. /// <typeparam name="TKey5"></typeparam>
  538. /// <typeparam name="TKey6"></typeparam>
  539. /// <typeparam name="TKey7"></typeparam>
  540. /// <typeparam name="TKey8"></typeparam>
  541. /// <typeparam name="TKey9"></typeparam>
  542. /// <typeparam name="TKey10"></typeparam>
  543. /// <typeparam name="TKey11"></typeparam>
  544. /// <typeparam name="TKey12"></typeparam>
  545. /// <typeparam name="TKey13"></typeparam>
  546. /// <typeparam name="TKey14"></typeparam>
  547. /// <typeparam name="TKey15"></typeparam>
  548. /// <typeparam name="TKey16"></typeparam>
  549. /// <typeparam name="TKey17"></typeparam>
  550. /// <typeparam name="TKey18"></typeparam>
  551. /// <typeparam name="TKey19"></typeparam>
  552. /// <typeparam name="TKey20"></typeparam>
  553. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  554. TKey6, TKey7, TKey8, TKey9, TKey10,
  555. TKey11, TKey12, TKey13, TKey14, TKey15,
  556. TKey16, TKey17, TKey18, TKey19, TKey20> : CSObject<TObject>
  557. where TObject : CSObject<TObject>
  558. {
  559. /// <summary>
  560. /// TODO Completar documentación
  561. /// </summary>
  562. /// <param name="key1"></param>
  563. /// <param name="key2"></param>
  564. /// <param name="key3"></param>
  565. /// <param name="key4"></param>
  566. /// <param name="key5"></param>
  567. /// <param name="key6"></param>
  568. /// <param name="key7"></param>
  569. /// <param name="key8"></param>
  570. /// <param name="key9"></param>
  571. /// <param name="key10"></param>
  572. /// <param name="key11"></param>
  573. /// <param name="key12"></param>
  574. /// <param name="key13"></param>
  575. /// <param name="key14"></param>
  576. /// <param name="key15"></param>
  577. /// <param name="key16"></param>
  578. /// <param name="key17"></param>
  579. /// <param name="key18"></param>
  580. /// <param name="key19"></param>
  581. /// <param name="key20"></param>
  582. /// <returns></returns>
  583. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  584. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  585. TKey11 key11, TKey12 key12, TKey13 key13, TKey14 key14, TKey15 key15,
  586. TKey16 key16, TKey17 key17, TKey18 key18, TKey19 key19, TKey20 key20)
  587. {
  588. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  589. key6, key7, key8, key9, key10,
  590. key11, key12, key13, key14, key15,
  591. key16, key17, key18, key19, key20);
  592. }
  593. }
  594. /// <summary>
  595. /// TODO Completar documentación
  596. /// </summary>
  597. /// <typeparam name="TObject"></typeparam>
  598. /// <typeparam name="TKey1"></typeparam>
  599. /// <typeparam name="TKey2"></typeparam>
  600. /// <typeparam name="TKey3"></typeparam>
  601. /// <typeparam name="TKey4"></typeparam>
  602. /// <typeparam name="TKey5"></typeparam>
  603. /// <typeparam name="TKey6"></typeparam>
  604. /// <typeparam name="TKey7"></typeparam>
  605. /// <typeparam name="TKey8"></typeparam>
  606. /// <typeparam name="TKey9"></typeparam>
  607. /// <typeparam name="TKey10"></typeparam>
  608. /// <typeparam name="TKey11"></typeparam>
  609. /// <typeparam name="TKey12"></typeparam>
  610. /// <typeparam name="TKey13"></typeparam>
  611. /// <typeparam name="TKey14"></typeparam>
  612. /// <typeparam name="TKey15"></typeparam>
  613. /// <typeparam name="TKey16"></typeparam>
  614. /// <typeparam name="TKey17"></typeparam>
  615. /// <typeparam name="TKey18"></typeparam>
  616. /// <typeparam name="TKey19"></typeparam>
  617. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  618. TKey6, TKey7, TKey8, TKey9, TKey10,
  619. TKey11, TKey12, TKey13, TKey14, TKey15,
  620. TKey16, TKey17, TKey18, TKey19> : CSObject<TObject>
  621. where TObject : CSObject<TObject>
  622. {
  623. /// <summary>
  624. /// TODO Completar documentación
  625. /// </summary>
  626. /// <param name="key1"></param>
  627. /// <param name="key2"></param>
  628. /// <param name="key3"></param>
  629. /// <param name="key4"></param>
  630. /// <param name="key5"></param>
  631. /// <param name="key6"></param>
  632. /// <param name="key7"></param>
  633. /// <param name="key8"></param>
  634. /// <param name="key9"></param>
  635. /// <param name="key10"></param>
  636. /// <param name="key11"></param>
  637. /// <param name="key12"></param>
  638. /// <param name="key13"></param>
  639. /// <param name="key14"></param>
  640. /// <param name="key15"></param>
  641. /// <param name="key16"></param>
  642. /// <param name="key17"></param>
  643. /// <param name="key18"></param>
  644. /// <param name="key19"></param>
  645. /// <returns></returns>
  646. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  647. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  648. TKey11 key11, TKey12 key12, TKey13 key13, TKey14 key14, TKey15 key15,
  649. TKey16 key16, TKey17 key17, TKey18 key18, TKey19 key19)
  650. {
  651. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  652. key6, key7, key8, key9, key10,
  653. key11, key12, key13, key14, key15,
  654. key16, key17, key18, key19);
  655. }
  656. }
  657. /// <summary>
  658. /// TODO Completar documentación
  659. /// </summary>
  660. /// <typeparam name="TObject"></typeparam>
  661. /// <typeparam name="TKey1"></typeparam>
  662. /// <typeparam name="TKey2"></typeparam>
  663. /// <typeparam name="TKey3"></typeparam>
  664. /// <typeparam name="TKey4"></typeparam>
  665. /// <typeparam name="TKey5"></typeparam>
  666. /// <typeparam name="TKey6"></typeparam>
  667. /// <typeparam name="TKey7"></typeparam>
  668. /// <typeparam name="TKey8"></typeparam>
  669. /// <typeparam name="TKey9"></typeparam>
  670. /// <typeparam name="TKey10"></typeparam>
  671. /// <typeparam name="TKey11"></typeparam>
  672. /// <typeparam name="TKey12"></typeparam>
  673. /// <typeparam name="TKey13"></typeparam>
  674. /// <typeparam name="TKey14"></typeparam>
  675. /// <typeparam name="TKey15"></typeparam>
  676. /// <typeparam name="TKey16"></typeparam>
  677. /// <typeparam name="TKey17"></typeparam>
  678. /// <typeparam name="TKey18"></typeparam>
  679. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5, TKey6, TKey7, TKey8, TKey9, TKey10,
  680. TKey11, TKey12, TKey13, TKey14, TKey15, TKey16, TKey17, TKey18> : CSObject<TObject>
  681. where TObject : CSObject<TObject>
  682. {
  683. /// <summary>
  684. /// TODO Completar documentación
  685. /// </summary>
  686. /// <param name="key1"></param>
  687. /// <param name="key2"></param>
  688. /// <param name="key3"></param>
  689. /// <param name="key4"></param>
  690. /// <param name="key5"></param>
  691. /// <param name="key6"></param>
  692. /// <param name="key7"></param>
  693. /// <param name="key8"></param>
  694. /// <param name="key9"></param>
  695. /// <param name="key10"></param>
  696. /// <param name="key11"></param>
  697. /// <param name="key12"></param>
  698. /// <param name="key13"></param>
  699. /// <param name="key14"></param>
  700. /// <param name="key15"></param>
  701. /// <param name="key16"></param>
  702. /// <param name="key17"></param>
  703. /// <param name="key18"></param>
  704. /// <returns></returns>
  705. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  706. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  707. TKey11 key11, TKey12 key12, TKey13 key13, TKey14 key14, TKey15 key15,
  708. TKey16 key16, TKey17 key17, TKey18 key18)
  709. {
  710. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  711. key6, key7, key8, key9, key10,
  712. key11, key12, key13, key14, key15,
  713. key16, key17, key18);
  714. }
  715. }
  716. /// <summary>
  717. /// TODO Completar documentación
  718. /// </summary>
  719. /// <typeparam name="TObject"></typeparam>
  720. /// <typeparam name="TKey1"></typeparam>
  721. /// <typeparam name="TKey2"></typeparam>
  722. /// <typeparam name="TKey3"></typeparam>
  723. /// <typeparam name="TKey4"></typeparam>
  724. /// <typeparam name="TKey5"></typeparam>
  725. /// <typeparam name="TKey6"></typeparam>
  726. /// <typeparam name="TKey7"></typeparam>
  727. /// <typeparam name="TKey8"></typeparam>
  728. /// <typeparam name="TKey9"></typeparam>
  729. /// <typeparam name="TKey10"></typeparam>
  730. /// <typeparam name="TKey11"></typeparam>
  731. /// <typeparam name="TKey12"></typeparam>
  732. /// <typeparam name="TKey13"></typeparam>
  733. /// <typeparam name="TKey14"></typeparam>
  734. /// <typeparam name="TKey15"></typeparam>
  735. /// <typeparam name="TKey16"></typeparam>
  736. /// <typeparam name="TKey17"></typeparam>
  737. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  738. TKey6, TKey7, TKey8, TKey9, TKey10,
  739. TKey11, TKey12, TKey13, TKey14,
  740. TKey15, TKey16, TKey17> : CSObject<TObject>
  741. where TObject : CSObject<TObject>
  742. {
  743. /// <summary>
  744. /// TODO Completar documentación
  745. /// </summary>
  746. /// <param name="key1"></param>
  747. /// <param name="key2"></param>
  748. /// <param name="key3"></param>
  749. /// <param name="key4"></param>
  750. /// <param name="key5"></param>
  751. /// <param name="key6"></param>
  752. /// <param name="key7"></param>
  753. /// <param name="key8"></param>
  754. /// <param name="key9"></param>
  755. /// <param name="key10"></param>
  756. /// <param name="key11"></param>
  757. /// <param name="key12"></param>
  758. /// <param name="key13"></param>
  759. /// <param name="key14"></param>
  760. /// <param name="key15"></param>
  761. /// <param name="key16"></param>
  762. /// <param name="key17"></param>
  763. /// <returns></returns>
  764. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  765. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  766. TKey11 key11, TKey12 key12, TKey13 key13, TKey14 key14, TKey15 key15,
  767. TKey16 key16, TKey17 key17)
  768. {
  769. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  770. key6, key7, key8, key9, key10,
  771. key11, key12, key13, key14, key15,
  772. key16, key17);
  773. }
  774. }
  775. /// <summary>
  776. /// TODO Completar documentación
  777. /// </summary>
  778. /// <typeparam name="TObject"></typeparam>
  779. /// <typeparam name="TKey1"></typeparam>
  780. /// <typeparam name="TKey2"></typeparam>
  781. /// <typeparam name="TKey3"></typeparam>
  782. /// <typeparam name="TKey4"></typeparam>
  783. /// <typeparam name="TKey5"></typeparam>
  784. /// <typeparam name="TKey6"></typeparam>
  785. /// <typeparam name="TKey7"></typeparam>
  786. /// <typeparam name="TKey8"></typeparam>
  787. /// <typeparam name="TKey9"></typeparam>
  788. /// <typeparam name="TKey10"></typeparam>
  789. /// <typeparam name="TKey11"></typeparam>
  790. /// <typeparam name="TKey12"></typeparam>
  791. /// <typeparam name="TKey13"></typeparam>
  792. /// <typeparam name="TKey14"></typeparam>
  793. /// <typeparam name="TKey15"></typeparam>
  794. /// <typeparam name="TKey16"></typeparam>
  795. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  796. TKey6, TKey7, TKey8, TKey9, TKey10,
  797. TKey11, TKey12, TKey13, TKey14, TKey15, TKey16> : CSObject<TObject>
  798. where TObject : CSObject<TObject>
  799. {
  800. /// <summary>
  801. /// TODO Completar documentación
  802. /// </summary>
  803. /// <param name="key1"></param>
  804. /// <param name="key2"></param>
  805. /// <param name="key3"></param>
  806. /// <param name="key4"></param>
  807. /// <param name="key5"></param>
  808. /// <param name="key6"></param>
  809. /// <param name="key7"></param>
  810. /// <param name="key8"></param>
  811. /// <param name="key9"></param>
  812. /// <param name="key10"></param>
  813. /// <param name="key11"></param>
  814. /// <param name="key12"></param>
  815. /// <param name="key13"></param>
  816. /// <param name="key14"></param>
  817. /// <param name="key15"></param>
  818. /// <param name="key16"></param>
  819. /// <returns></returns>
  820. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  821. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  822. TKey11 key11, TKey12 key12, TKey13 key13, TKey14 key14, TKey15 key15,
  823. TKey16 key16)
  824. {
  825. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  826. key6, key7, key8, key9, key10,
  827. key11, key12, key13, key14, key15,
  828. key16);
  829. }
  830. }
  831. /// <summary>
  832. /// TODO Completar documentación
  833. /// </summary>
  834. /// <typeparam name="TObject"></typeparam>
  835. /// <typeparam name="TKey1"></typeparam>
  836. /// <typeparam name="TKey2"></typeparam>
  837. /// <typeparam name="TKey3"></typeparam>
  838. /// <typeparam name="TKey4"></typeparam>
  839. /// <typeparam name="TKey5"></typeparam>
  840. /// <typeparam name="TKey6"></typeparam>
  841. /// <typeparam name="TKey7"></typeparam>
  842. /// <typeparam name="TKey8"></typeparam>
  843. /// <typeparam name="TKey9"></typeparam>
  844. /// <typeparam name="TKey10"></typeparam>
  845. /// <typeparam name="TKey11"></typeparam>
  846. /// <typeparam name="TKey12"></typeparam>
  847. /// <typeparam name="TKey13"></typeparam>
  848. /// <typeparam name="TKey14"></typeparam>
  849. /// <typeparam name="TKey15"></typeparam>
  850. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  851. TKey6, TKey7, TKey8, TKey9, TKey10,
  852. TKey11, TKey12, TKey13, TKey14, TKey15> : CSObject<TObject>
  853. where TObject : CSObject<TObject>
  854. {
  855. /// <summary>
  856. /// TODO Completar documentación
  857. /// </summary>
  858. /// <param name="key1"></param>
  859. /// <param name="key2"></param>
  860. /// <param name="key3"></param>
  861. /// <param name="key4"></param>
  862. /// <param name="key5"></param>
  863. /// <param name="key6"></param>
  864. /// <param name="key7"></param>
  865. /// <param name="key8"></param>
  866. /// <param name="key9"></param>
  867. /// <param name="key10"></param>
  868. /// <param name="key11"></param>
  869. /// <param name="key12"></param>
  870. /// <param name="key13"></param>
  871. /// <param name="key14"></param>
  872. /// <param name="key15"></param>
  873. /// <returns></returns>
  874. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  875. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  876. TKey11 key11, TKey12 key12, TKey13 key13, TKey14 key14, TKey15 key15)
  877. {
  878. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  879. key6, key7, key8, key9, key10,
  880. key11, key12, key13, key14, key15);
  881. }
  882. }
  883. /// <summary>
  884. /// TODO Completar documentación
  885. /// </summary>
  886. /// <typeparam name="TObject"></typeparam>
  887. /// <typeparam name="TKey1"></typeparam>
  888. /// <typeparam name="TKey2"></typeparam>
  889. /// <typeparam name="TKey3"></typeparam>
  890. /// <typeparam name="TKey4"></typeparam>
  891. /// <typeparam name="TKey5"></typeparam>
  892. /// <typeparam name="TKey6"></typeparam>
  893. /// <typeparam name="TKey7"></typeparam>
  894. /// <typeparam name="TKey8"></typeparam>
  895. /// <typeparam name="TKey9"></typeparam>
  896. /// <typeparam name="TKey10"></typeparam>
  897. /// <typeparam name="TKey11"></typeparam>
  898. /// <typeparam name="TKey12"></typeparam>
  899. /// <typeparam name="TKey13"></typeparam>
  900. /// <typeparam name="TKey14"></typeparam>
  901. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  902. TKey6, TKey7, TKey8, TKey9, TKey10,
  903. TKey11, TKey12, TKey13, TKey14> : CSObject<TObject>
  904. where TObject : CSObject<TObject>
  905. {
  906. /// <summary>
  907. /// TODO Completar documentación
  908. /// </summary>
  909. /// <param name="key1"></param>
  910. /// <param name="key2"></param>
  911. /// <param name="key3"></param>
  912. /// <param name="key4"></param>
  913. /// <param name="key5"></param>
  914. /// <param name="key6"></param>
  915. /// <param name="key7"></param>
  916. /// <param name="key8"></param>
  917. /// <param name="key9"></param>
  918. /// <param name="key10"></param>
  919. /// <param name="key11"></param>
  920. /// <param name="key12"></param>
  921. /// <param name="key13"></param>
  922. /// <param name="key14"></param>
  923. /// <returns></returns>
  924. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  925. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  926. TKey11 key11, TKey12 key12, TKey13 key13, TKey14 key14)
  927. {
  928. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  929. key6, key7, key8, key9, key10,
  930. key11, key12, key13, key14);
  931. }
  932. }
  933. /// <summary>
  934. /// TODO Completar documentación
  935. /// </summary>
  936. /// <typeparam name="TObject"></typeparam>
  937. /// <typeparam name="TKey1"></typeparam>
  938. /// <typeparam name="TKey2"></typeparam>
  939. /// <typeparam name="TKey3"></typeparam>
  940. /// <typeparam name="TKey4"></typeparam>
  941. /// <typeparam name="TKey5"></typeparam>
  942. /// <typeparam name="TKey6"></typeparam>
  943. /// <typeparam name="TKey7"></typeparam>
  944. /// <typeparam name="TKey8"></typeparam>
  945. /// <typeparam name="TKey9"></typeparam>
  946. /// <typeparam name="TKey10"></typeparam>
  947. /// <typeparam name="TKey11"></typeparam>
  948. /// <typeparam name="TKey12"></typeparam>
  949. /// <typeparam name="TKey13"></typeparam>
  950. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  951. TKey6, TKey7, TKey8, TKey9, TKey10,
  952. TKey11, TKey12, TKey13> : CSObject<TObject>
  953. where TObject : CSObject<TObject>
  954. {
  955. /// <summary>
  956. /// TODO Completar documentación
  957. /// </summary>
  958. /// <param name="key1"></param>
  959. /// <param name="key2"></param>
  960. /// <param name="key3"></param>
  961. /// <param name="key4"></param>
  962. /// <param name="key5"></param>
  963. /// <param name="key6"></param>
  964. /// <param name="key7"></param>
  965. /// <param name="key8"></param>
  966. /// <param name="key9"></param>
  967. /// <param name="key10"></param>
  968. /// <param name="key11"></param>
  969. /// <param name="key12"></param>
  970. /// <param name="key13"></param>
  971. /// <returns></returns>
  972. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  973. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  974. TKey11 key11, TKey12 key12, TKey13 key13)
  975. {
  976. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  977. key6, key7, key8, key9, key10,
  978. key11, key12, key13);
  979. }
  980. }
  981. /// <summary>
  982. /// TODO Completar documentación
  983. /// </summary>
  984. /// <typeparam name="TObject"></typeparam>
  985. /// <typeparam name="TKey1"></typeparam>
  986. /// <typeparam name="TKey2"></typeparam>
  987. /// <typeparam name="TKey3"></typeparam>
  988. /// <typeparam name="TKey4"></typeparam>
  989. /// <typeparam name="TKey5"></typeparam>
  990. /// <typeparam name="TKey6"></typeparam>
  991. /// <typeparam name="TKey7"></typeparam>
  992. /// <typeparam name="TKey8"></typeparam>
  993. /// <typeparam name="TKey9"></typeparam>
  994. /// <typeparam name="TKey10"></typeparam>
  995. /// <typeparam name="TKey11"></typeparam>
  996. /// <typeparam name="TKey12"></typeparam>
  997. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  998. TKey6, TKey7, TKey8, TKey9, TKey10,
  999. TKey11, TKey12> : CSObject<TObject>
  1000. where TObject : CSObject<TObject>
  1001. {
  1002. /// <summary>
  1003. /// TODO Completar documentación
  1004. /// </summary>
  1005. /// <param name="key1"></param>
  1006. /// <param name="key2"></param>
  1007. /// <param name="key3"></param>
  1008. /// <param name="key4"></param>
  1009. /// <param name="key5"></param>
  1010. /// <param name="key6"></param>
  1011. /// <param name="key7"></param>
  1012. /// <param name="key8"></param>
  1013. /// <param name="key9"></param>
  1014. /// <param name="key10"></param>
  1015. /// <param name="key11"></param>
  1016. /// <param name="key12"></param>
  1017. /// <returns></returns>
  1018. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  1019. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  1020. TKey11 key11, TKey12 key12)
  1021. {
  1022. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  1023. key6, key7, key8, key9, key10,
  1024. key11, key12);
  1025. }
  1026. }
  1027. /// <summary>
  1028. /// TODO Completar documentación
  1029. /// </summary>
  1030. /// <typeparam name="TObject"></typeparam>
  1031. /// <typeparam name="TKey1"></typeparam>
  1032. /// <typeparam name="TKey2"></typeparam>
  1033. /// <typeparam name="TKey3"></typeparam>
  1034. /// <typeparam name="TKey4"></typeparam>
  1035. /// <typeparam name="TKey5"></typeparam>
  1036. /// <typeparam name="TKey6"></typeparam>
  1037. /// <typeparam name="TKey7"></typeparam>
  1038. /// <typeparam name="TKey8"></typeparam>
  1039. /// <typeparam name="TKey9"></typeparam>
  1040. /// <typeparam name="TKey10"></typeparam>
  1041. /// <typeparam name="TKey11"></typeparam>
  1042. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  1043. TKey6, TKey7, TKey8, TKey9, TKey10, TKey11> : CSObject<TObject>
  1044. where TObject : CSObject<TObject>
  1045. {
  1046. /// <summary>
  1047. /// TODO Completar documentación
  1048. /// </summary>
  1049. /// <param name="key1"></param>
  1050. /// <param name="key2"></param>
  1051. /// <param name="key3"></param>
  1052. /// <param name="key4"></param>
  1053. /// <param name="key5"></param>
  1054. /// <param name="key6"></param>
  1055. /// <param name="key7"></param>
  1056. /// <param name="key8"></param>
  1057. /// <param name="key9"></param>
  1058. /// <param name="key10"></param>
  1059. /// <param name="key11"></param>
  1060. /// <returns></returns>
  1061. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  1062. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10,
  1063. TKey11 key11)
  1064. {
  1065. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  1066. key6, key7, key8, key9, key10,
  1067. key11);
  1068. }
  1069. }
  1070. /// <summary>
  1071. /// TODO Completar documentación
  1072. /// </summary>
  1073. /// <typeparam name="TObject"></typeparam>
  1074. /// <typeparam name="TKey1"></typeparam>
  1075. /// <typeparam name="TKey2"></typeparam>
  1076. /// <typeparam name="TKey3"></typeparam>
  1077. /// <typeparam name="TKey4"></typeparam>
  1078. /// <typeparam name="TKey5"></typeparam>
  1079. /// <typeparam name="TKey6"></typeparam>
  1080. /// <typeparam name="TKey7"></typeparam>
  1081. /// <typeparam name="TKey8"></typeparam>
  1082. /// <typeparam name="TKey9"></typeparam>
  1083. /// <typeparam name="TKey10"></typeparam>
  1084. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  1085. TKey6, TKey7, TKey8, TKey9, TKey10> : CSObject<TObject>
  1086. where TObject : CSObject<TObject>
  1087. {
  1088. /// <summary>
  1089. /// TODO Completar documentación
  1090. /// </summary>
  1091. /// <param name="key1"></param>
  1092. /// <param name="key2"></param>
  1093. /// <param name="key3"></param>
  1094. /// <param name="key4"></param>
  1095. /// <param name="key5"></param>
  1096. /// <param name="key6"></param>
  1097. /// <param name="key7"></param>
  1098. /// <param name="key8"></param>
  1099. /// <param name="key9"></param>
  1100. /// <param name="key10"></param>
  1101. /// <returns></returns>
  1102. public static TObject Read(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5,
  1103. TKey6 key6, TKey7 key7, TKey8 key8, TKey9 key9, TKey10 key10)
  1104. {
  1105. return CSFactory.Read<TObject>(key1, key2, key3, key4, key5,
  1106. key6, key7, key8, key9, key10);
  1107. }
  1108. }
  1109. /// <summary>
  1110. /// TODO Completar documentación
  1111. /// </summary>
  1112. /// <typeparam name="TObject"></typeparam>
  1113. /// <typeparam name="TKey1"></typeparam>
  1114. /// <typeparam name="TKey2"></typeparam>
  1115. /// <typeparam name="TKey3"></typeparam>
  1116. /// <typeparam name="TKey4"></typeparam>
  1117. /// <typeparam name="TKey5"></typeparam>
  1118. /// <typeparam name="TKey6"></typeparam>
  1119. /// <typeparam name="TKey7"></typeparam>
  1120. /// <typeparam name="TKey8"></typeparam>
  1121. /// <typeparam name="TKey9"></typeparam>
  1122. public abstract class CSObject<TObject, TKey1, TKey2, TKey3, TKey4, TKey5,
  1123. TKey6, TKey7, TKey8, TKey9> : CSObject<TObject> where TObject : CSObject<TObject>
  1124. {
  1125. /// <summary>
  1126. /// T…

Large files files are truncated, but you can click here to view the full file