Advertisement
Hyluss

Generics

Dec 1st, 2022
843
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.88 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4.  
  5. namespace ConsoleApp5
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             List<BaseData> datas = new List<BaseData>();
  12.             datas.Add(new AData());
  13.             datas.Add(new BData());
  14.  
  15.             List<BaseData> newData = new List<BaseData>();
  16.  
  17.             foreach (BaseData data in datas)
  18.             {
  19.                 BaseData x = data.Create(data);
  20.             }
  21.         }
  22.     }
  23.  
  24.     public abstract class BaseData
  25.     {
  26.         public string guid;
  27.  
  28.         public BaseData()
  29.         {
  30.             guid = string.Empty;
  31.         }
  32.  
  33.         public BaseData(BaseData data)
  34.         {
  35.             guid = data.guid;
  36.         }
  37.  
  38.         public abstract BaseData Create<T>(T data) where T : BaseData;
  39.  
  40.         public T GetBaseData<T>() where T : BaseData
  41.         {
  42.             return this as T;
  43.         }
  44.     }
  45.  
  46.     public class AData : BaseData
  47.     {
  48.         public string A;
  49.  
  50.         public AData() : base()
  51.         {
  52.             A = string.Empty;
  53.         }
  54.  
  55.         public AData(AData data) : base(data)
  56.         {
  57.             A = data.A;
  58.         }
  59.  
  60.         public override AData Create<T>(T data)
  61.         {
  62.             AData oldData = data.GetBaseData<AData>();
  63.             AData newSuperAData = new AData(oldData);
  64.             return newSuperAData;
  65.         }
  66.  
  67.     }
  68.  
  69.     public class BData : BaseData
  70.     {
  71.         public string B;
  72.  
  73.         public BData() : base()
  74.         {
  75.             B = string.Empty;
  76.         }
  77.  
  78.         public BData(BData data) : base(data)
  79.         {
  80.             B = data.B;
  81.         }
  82.  
  83.         public override BData Create<T>(T data)
  84.         {
  85.             BData oldData = data.GetBaseData<BData>();
  86.             BData newSuperBData = new BData(oldData);
  87.             return newSuperBData;
  88.         }
  89.     }
  90.  
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement