C#에서 클라이언트 서버 응용 프로그램을 개발 중입니다.C# client-server 개체 캐스팅 오류 목록
내 서버에서 클라이언트로 List
Students
의 서버 쪽에서 직렬화하고 클라이언트 쪽에서 deserialize하는 개체를 보내고 있습니다.
// server side serialization.
List<Student> ordByMedGen = repo.ordByMedGen();
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(writer.BaseStream, ordByMedGen);
// client side deserialization.
BinaryFormatter bin = new BinaryFormatter();
List<Student> list = (List<Student>)bin.Deserialize(receive.BaseStream);
Console.WriteLine(list.Count);
// print the list
내가 성공적으로 서버 측에서 문자열의 List
를 전송하고 클라이언트 측에 인쇄 된이 방법을 사용하여 다음과 같이 직렬화 및 역 직렬화이다. 내 Student
클래스를했을 때 나는 SERVER.EXE를 만들려면 다음과 같은 오류를
을 얻고 client.exe가 나는 다음과 같은 명령을 사용 :[A]System.Collections.Generic.List
1[ServerClient.Student] cannot be cast to [B]System.Collections.Generic.List
1[ServerClient.Student]. Type A originates from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' in the context 'LoadNeither' at location 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'. Type B originates from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' in the context 'LoadNeither' at location 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe Server.cs Repository.cs Student.cs
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe Client.cs Student.cs
나는 오류 또는 경고를 얻을 수 없습니다. 또한 Student
클래스에는 [Serialization]
속성이 있습니다. 웹에서 이런 종류의 오류를 검색했지만 아무 것도 찾을 수 없습니다.
나중에 편집 : 아마도 Student.cs가 서버와 클라이언트 모두에서 참조로 제공되어 컴파일러를 혼동하게 만들고 학생을 오류와 같이 2 가지 유형으로 봅니다 : A와 B?
나중에 편집 (2) :이 문제는 컴파일시에 Student.cs의 dll을 생성하여 서버 및 클라이언트에서 참조되므로 컴파일러가 혼동하지 않도록 해결할 수도 있습니다.
XmlSerializer로 변경되어 제대로 작동합니다. 고마워요! – user2271933