null로 출력되고 있었다.패킷 송수신 로직은 다음과 같았다.

가장 먼저 의심한 것은 송신부와 수신부의 패킷 차이였다.
참조 Dll을 변경하면서 발생할 수 있는 휴먼 에러를 의심했다.
(직렬화/역직렬화 클래스 구조 변경이나, 암/복호화 결과 차이 등..)
송신부의 버퍼와 수신부의 버퍼를 각각 String으로 변환해서 확인해 보니 동일한 결과가 나왔다.
패킷에는 문제가 없다는 것이므로 해당 추론은 기각

as 구문으로 Object to Class 형변환이 이루어진다.
object pakcetObj = Packet.Deserialize(AES256.Decrypt(readBuffer));
Packet packet = pakcetObj as Packet;
as 구문은 형변환이 실패하더라도 Exception이 발생하지 않고 null이 반환된다.
따라서, 형변환 부분의 오류 검증을 위해 강제 형변환으로 구문을 수정했다.
try
{
object pakcetObj = Packet.Deserialize(AES256.Decrypt(readBuffer));
Packet packet = (Packet) pakcetObj;
}
catch (Exception e)
{
Debug.WriteLine(e);
}
디버깅 결과 Exception이 발생한다. 🤔
조금 더 자세히 알아보니 송신부와 수신부의 Dll 명칭이 상이했다.


라이브러리 Dll을 변경하였을 때 직렬화/역직렬화와 관련된 클래스는 변경하지 않았다.
그래서 해당 Dll을 사용하는 항목들 중 일부만 참조를 재설정한 것이 문제가 되었다.
내부 클래스 구조가 같더라도 Dll 자체가 달라지면 형변환이 불가하다.
즉, 직렬화한 값을 역직렬화할 수 없다. 참조를 잘 확인하자.. ✏️