자식 개체 및 형제 개체에서 개체 이름이 동일한 XML Serializer를 사용하여 개체를 직렬화 할 수 없습니다.

error_handler

이것이 반복되는 쿼리라면, 어떤 것도 찾을 수 없기 때문에 그러한 경우에 대한 정확한 이유가있는 것을 제안하십시오.

xml serializer를 사용하여 다음 개체를 xml로 serialize하려고하지만 몇 가지 예외가 발생합니다.

[Serializable]
public class KAD
{
    public KAD()
    {
        StaffMembers = new List<StaffMember>();
        Jobs = new List<Job>();
        Tasks = new List<Task>();
    }
    public List<StaffMember> StaffMembers { get; set; }

    public List<Job> Jobs { get; set; }

    public List<Task> Tasks { get; set; }
}


public class Job
{
    public Job()
    {

    }
    public int? JobId { get; set; }
    public string JobTitle { get; set; }
 }

public class Task
{
    public Task()
    {

    }
    public int? TaskId { get; set; }
    public string TaskTitle { get; set; }
}

그리고 내 StaffMember 클래스는 다른 네임 스페이스이며 자식 속성이 다시 있지만 동일한 이름, 즉 Task 및 Job을 갖습니다.

 public class StaffMember
 {
    public StaffMember()
    {
        Jobs = new List<Job>();
    }
    public int StaffMemberID { get; set; }        
    public List<Job> Jobs { get; set; }
}

public class Task
{
    public int? TaskId { get; set; }
    public string TaskTitle { get; set; }
    public bool? OverAllTaskCompetency { get; set; }
    public DateTime? ExpireyOfNextCompetencyOrLicenceForTask { get; set; }
}

public class Job
{
    public Job()
    {
        Tasks = new List<Task>();
    }

    public int? JobId { get; set; }
    public string JobTitle { get; set; }        
    public decimal? Rate { get; set; }
    public List<Task> Tasks { get; set; }
}

serializer를 초기화하려고하면 다음 줄에서 예외가 발생합니다.

 XmlSerializer ser = new XmlSerializer(typeof (KAD)); 

System.Xml.dll에서 'System.InvalidOperationException'유형의 처리되지 않은 예외가 발생했습니다.

추가 정보 : 'KAD'유형을 반영하는 중에 오류가 발생했습니다. 누구든지 가능한 해결책을 제안하면 대단히 감사하겠습니다. 한 가지 더, 자식 및 부모 범위에서 클래스 이름을 변경할 수 없습니다.

error_handler

이 문제에 대한 해결책을 찾았습니다.

상위 개체의 네임 스페이스와 이름을 추가하면 serializer가 하위 개체와 구분할 수 있습니다. 상위 Job 및 Task 클래스와 마찬가지로 XmlRoot 속성을 사용합니다.

[XmlRoot("KAD_Job", Namespace = "root")]
public class Job
{
    public Job()
    {

    }
    public int? JobId { get; set; }
    public string JobTitle { get; set; }
    public string CraftCode { get; set; }
    public decimal? Rate { get; set; }
}
[XmlRoot("KAD_TASK", Namespace = "root")]
public class Task
{
    public Task()
    {

    }
    public int? TaskId { get; set; }
    public string TaskTitle { get; set; }
}

그리고 이것은 나를 위해 일했습니다. 감사.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관