어떤 항목은 기존의 100여 개의 DLL을 호출하여 서열화할 수 없는 실체 클래스를 서열화할 수 있는

5792 단어 서열화
도메인 간 액세스를 위해서는 모든 입력 및 출력 매개 변수가 MarshalByRefObject를 상속하거나 시리얼로 표시되어야 합니다.
이 dll들은 또 다른 사람이 개발한 것이기 때문에 우리는 그것들의 계승과MarshalByRefObject를 수정할 수 없다. 그리고 많은 유형이 이미 계승되었다...
그러면 장르를 서열화하는 데 공을 들일 수밖에 없어요.
이전에 한 편의 문서를 써서 어떻게 서열화할 수 없는 종류를 서열화할 수 있는지 생각해 본 적이 있다
시리얼화할 수 없는 클래스 선언은 다음과 같습니다.

  
  
public class InputParameter
{
public string Name;
public int ? Type;
public decimal Money { get ; set ; }
}

그나저나 이런 종류는 정말 엉망진창이야.....--#
하위 클래스를 실현하고 ISerializable 인터페이스를 실현하면 InputParameter를 전달해야 하는 곳에서 하위 클래스로 대체할 수 있습니다
코드는 다음과 같습니다.

  
  
public class SerializableParameter : InputParameter, ISerializable
{
public SerializableParameter(SerializationInfo info, StreamingContext context)
{
this .Name = info.GetString( " Name " );
if (info.GetValue( " Type " , typeof (Object)) != null )
this .Name = info.GetString( " Type " );
this .Money = info.GetDecimal( " Money " );
}


public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue(
" Name " , this .Name);
info.AddValue(
" Type " , this .Type);
info.AddValue(
" Money " , this .Money);
}
}

C# 인터페이스에서 구조 함수를 정의할 수 없음...정말 비극적이군.
PS:이 방법은 한계가 있어요.
  1. 부류는 밀봉할 수 없다
  2. 부류는 사유 구조 함수만 있을 수 없음 (private와 보호된 구조 함수 선택
C# 인터페이스에서 구조 함수를 정의할 수 없음...그래서 여기에 대응하는 구조 함수가 정의되지 않았는데...런타임 오류 발생...(BTW C#도 정적 인터페이스를 정의할 수 없음....CLR 가능)
List와 같은 집합은List로 대체할 수 없지만,List를 구성할 수 있습니다. 내부 항목의 실제 유형은serializable Parameter입니다.

좋은 웹페이지 즐겨찾기