>

.net 코어 및 .net 프레임 워크 (.net 표준)를 지원하는 타사 nuget 패키지를 사용했습니다.

내 프로젝트는 .net 프레임 워크 4.62 프로젝트였으며 해당 타사를 사용했을 때 XmlSerializer 로부터 예외를 받았습니다. .

문제는 부동산에있는 개인 게터 때문이었습니다.

Only public properties and fields can be serialized. Properties must have public accessors (get and set methods). If you need to serialize non-public data, use the BinaryFormatter class rather than XML serialization.

전체 소스

이 오류를받은 후 .net core 2.2 프로젝트를 열려고 시도했지만 동일한 타사 nuget을 소비했으며 동일한 코드가 작동하는 것을 보았습니다.

그는 문제를 재현하는 작은 코드 예입니다 :

public class Test
{
    public string TestProp { private get; set; }
}
// Exception on .net 462 and works on .net core 2.2
var serializer = XmlSerializer.FromTypes(new[] { typeof(Test) });

이것은 .net 핵심 구현이나 기능에 버그입니까? repo를 포크하지 않고 코드를 수정하지 않고 .net 프레임 워크에서 이것을 지원하기 위해 할 수있는 일이 있습니까?

  • 답변 # 1

    여기서 "버그"는 다른 시간에 실패한다는 것입니다. net462에서 FromTypes 중 실패 ; netcoreapp2.2 에서  그리고 netcoreapp3.0 Serialize 동안 실패합니다. 와 함께 :

    와이즈 비즈

    그러므로 ... IMO에 대해 걱정할 가치가 없습니다. 실제기능의 차이는 없습니다. 즉,작업하지 않습니다. 그러니 ... 그렇게하지 않습니까?

    그러나 github에서 버그로 버그를 기록하고 원하는 경우 PR이 일찍 실패하도록 PR을 제출할 수도 있습니다.

    그 말 : 추가하면 :

    System.InvalidOperationException: There was an error generating the XML document. --->System.MethodAccessException: Attempt by method 'Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTest.Write2_Test(System.String, System.String, Test, Boolean, Boolean)' to access method 'Test.get_TestProp()' failed

    그러면 public bool ShouldSerializeTestProp() => false; 에서실제로 작동합니다  그리고 netcoreapp2.2 어느 쪽이 좋을까요? 그리고 새로운 행동을 바꾸는아님이유로 간주 될 수도 있습니다

    netcoreapp3.0

  • 이전 python - 케라 스가 레이어 이름을 바꾸는 것을 방지하는 방법
  • 다음 pdf - PHP Fpdi 오류"예기치 않은 T_USE, T_FUNCTION을 예상 함"