Как сопоставить рекурсивный объект с другим рекурсивным объектом в c# - PullRequest
0 голосов
/ 09 июля 2020

У меня есть объект ObjA следующего типа

class TypeA A
{
    string fied ID{get; set;}
    public List<TypeA> children{get; set;}
}

Я хочу скопировать этот ObjA в ObjB, который выглядит следующим образом

class TypeB B
{
    string fied ID{get; set;}
    public List<TypeB> children{get; set;}
}

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Трудно помочь вам, потому что неясно, чего вы пытаетесь достичь с помощью этого.

Но, возможно, Интерфейс - лучший способ go для вас.

public interface ITyp
{
    string FieldID { get; set; }

    List<ITyp> Children { get; set; }
}

public class TypA : ITyp
{
    public string FieldID { get; set; }

    public List<ITyp> Children { get; set; } = new List<ITyp>();
}

public class TypB : ITyp
{
    public string FieldID { get; set; }

    public List<ITyp> Children { get; set; } = new List<ITyp>();
}

Благодаря этому вы можете сопоставить TypA и TypB одному и тому же объекту ITyp.

ITyp ityp = new TypA();
ityp = new TypB();

Вы можете использовать интерфейс напрямую.

string ID = ityp.FieldID;

Или вы можете преобразовать его обратно в TypA или Тип B.

TypA typaChild;
if (ityp.Children[0].GetType() == typeof(TypA)) typaChild = (TypA)ityp.Children[0];
0 голосов
/ 09 июля 2020

Если вы хотите скопировать значения объекта из одного объекта в другой, вы можете иметь служебную функцию, которая обрабатывает создание и присвоение одного типа объекта другому.

static TypeB Copy(TypeA obj)
{
    TypeB copiedObj = new TypeB();
    // Assign values from obj to copiedObj
    // copiedObj.Id = obj.Id;
    return copiedObj;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...