RuntimeTypeModel.Default [typeof (IMyClass2)] AddSubType (1, typeof (MyClass)) "반복 된 데이터 (목록, 컬렉션 등)에 inbuilt 동작이 있으며 하위 클래스로 만들 수 없습니다"예외 발생 다음은 코드 스 니펫컬렉션 유형에 AddSubType을 사용하려면 어떻게해야합니까?
public partial class TestClass
{
public TestClass()
{
}
private void Serialize(object sender, EventArgs e)
{
Stream stream = new FileStream(resultFilePath,
FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
RuntimeTypeModel.Default[typeof(IMyClass2)].AddSubType(1, typeof(MyClass));
Serializer.Serialize(stream, myDict);
stream.Close();
}
private void DeSerialize(object sender, EventArgs e)
{
Stream stream = new
FileStream(resultFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
Dictionary<int, IMyClass2> myNewDict = Serializer.Deserialize<Dictionary<int, IMyClass2>>(stream);
stream.Close();
}
}
[ProtoContract]
[Serializable]
public class MyClass : IMyClass2
{
#region IMyClass2 Members
//members
#endregion
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
throw new NotImplementedException();
}
#endregion
}
public interface IMyClass2 : IMyClass1
{
//members
}
public interface IMyClass1 : IEnumerable
{
//members
}
이 예외는 어떻게 처리해야합니까? 도와주세요.
List {get; set;}의 속성이 직렬화 가능해야합니까? 이 "반복 된 데이터"예외는 어떤 이유로 든 –
sgtz
@sgtz에서 곧바로 작동합니다. (회원이 직렬화로 표시되어있는 한) 아무 것도 할 필요가 없습니다. 서브 클래 싱 된 * 목록이 있습니까? 구체적인 예가 있을까요? –
[ProtoContract (IgnoreListHandling = true)]을 사용해야했고 사전을 비롯한 몇 가지 정적 속성도 [ProtoIgnore]에 부여해야했습니다. 감사. – sgtz