IModel.cs 731 B

123456789101112131415161718192021222324252627
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net.Http.Headers;
  5. using System.Runtime.Serialization.Formatters.Binary;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace Shaker.Models
  9. {
  10. public interface IModel : ICloneable
  11. {
  12. }
  13. public abstract class BaseModel : IModel
  14. {
  15. public int Id = 0;
  16. public abstract object Clone();
  17. }
  18. public static class IModelTools
  19. {
  20. public static TModel CloneBase<TModel>(this TModel model) where TModel : IModel
  21. {
  22. return Newtonsoft.Json.JsonConvert.DeserializeObject<TModel>(Newtonsoft.Json.JsonConvert.SerializeObject(model)) ?? Activator.CreateInstance<TModel>();
  23. }
  24. }
  25. }