Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- namespace ConsoleApp5
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<BaseData> datas = new List<BaseData>();
- datas.Add(new AData());
- datas.Add(new BData());
- List<BaseData> newData = new List<BaseData>();
- foreach (BaseData data in datas)
- {
- BaseData x = data.Create(data);
- }
- }
- }
- public abstract class BaseData
- {
- public string guid;
- public BaseData()
- {
- guid = string.Empty;
- }
- public BaseData(BaseData data)
- {
- guid = data.guid;
- }
- public abstract BaseData Create<T>(T data) where T : BaseData;
- public T GetBaseData<T>() where T : BaseData
- {
- return this as T;
- }
- }
- public class AData : BaseData
- {
- public string A;
- public AData() : base()
- {
- A = string.Empty;
- }
- public AData(AData data) : base(data)
- {
- A = data.A;
- }
- public override AData Create<T>(T data)
- {
- AData oldData = data.GetBaseData<AData>();
- AData newSuperAData = new AData(oldData);
- return newSuperAData;
- }
- }
- public class BData : BaseData
- {
- public string B;
- public BData() : base()
- {
- B = string.Empty;
- }
- public BData(BData data) : base(data)
- {
- B = data.B;
- }
- public override BData Create<T>(T data)
- {
- BData oldData = data.GetBaseData<BData>();
- BData newSuperBData = new BData(oldData);
- return newSuperBData;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement