protobuf-net을 통해 문자열을 TCP 서버 (구현 됨)에 보내려면 C# 클라이언트를 작성하고 싶습니다. 그러나 protobuf-net을 사용하여 문자열을 serialize하려고하면 TypeInitializerException
" 'Singleton'의 형식 이니셜 라이저에서 예외가 발생했습니다." 성공하지 않고,이 사이트 및 다른 사람에 의해 조언 접근 방법을 시도했습니다protobuf-net을 사용하여 C# 문자열을 직렬화하는 중 오류가 발생했습니다.
public static void TelnetConnect(string host, int port) {
...
Message msg = new Message("This is a test.");
byte[] sentbytes = msg.Serialize();
...
}
[ProtoContract]
public abstract class MessageI {
public byte[] Serialize() {
byte[] result;
using (var stream = new MemoryStream()) {
Serializer.Serialize(stream, this); //THIS LINE THROWS EXCEPTION
result = stream.ToArray();
}
return result;
}
}
[ProtoContract]
public class Message : MessageI {
[ProtoMember(1)]
public string str { get; set; }
public Message(string s) {
this.str = s;
}
}
: 여기
는 코드입니다. 저는 Visual Studio 2010에서 C#을 사용하고 있습니다.고마워, 대단히 감사합니다.
UPDATE : 스택 추적 :
이at ProtoBuf.Meta.RuntimeTypeModel.get_Default()
at ProtoBuf.Serializer.Serialize[T](Stream destination, T instance)
at PingNorbertServer.MessageI.Serialize() in C:\Users\RS88517\Documents\Visual Studio 2010\Projects\PingNorbertServer\PingNorbertServer\NorbertClient.cs:line 37
at PingNorbertServer.NorbertClient.TelnetConnect(String host, Int32 port) in C:\Users\RS88517\Documents\Visual Studio 2010\Projects\PingNorbertServer\PingNorbertServer\NorbertClient.cs:line 23
at PingNorbertServer.NorbertClient.Main(String[] args) in C:\Users\RS88517\Documents\Visual Studio 2010\Projects\PingNorbertServer\PingNorbertServer\NorbertClient.cs:line 14
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
나는 Singleton 클래스가 무엇인지 모르지만 아마도 MemoryStream, Serializer 또는 Message 일 것이다. –
이 예외는 일반적으로 오류를 발생시키는 정적 생성자가 호출 될 때 발생합니다. 디버거가 자동으로 정적 생성자 ("Singleton"으로 추정 됨)로 이동하지 않으므로 스택 추적을보고 실제 오류 – jcharlesworthuk
을 찾으면됩니다. 오류가 발생했습니다. –