我创建了一个客户端服务器应用程序,它当前能够将消息作为容器发送:
[Serializable]
public class MsgContainer
{
public string TableName { get; set; }
public bool SomethingBool { get; set; }
public DataTable DataTableData { get; set; }
}
问题:根据用户的请求,我希望服务器能够发送表单
public Form requestedForm { get; set; }
问题(因为我已在网上阅读并在我的应用程序中尝试)WinForms不可序列化,这就是为什么我收到以下错误:
System.Runtime.Serialization.SerializationException:在程序集'System.Windows.Forms中输入'System'Windows.Forms.Form',Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'未标记为可序列化。
我的问题有解决方法吗?
我强烈建议你找到一种不同的方法,无论你想做什么。表格不可序列化。你可以:
无论哪种方式,您都需要克服以下许多问题,例如:
基本上,这将是你最糟糕的噩梦,经过花费很多时间你可能花费在它上面,你最终会意识到你除了垃圾填充物之外什么都没有。
你不能(合理地)序列化表格。
如果可行,更好的方法是将表单构建到客户端应用程序中。然后让服务器指示客户端打开哪个表单。可以选择使用枚举。
public enum FormType
{
Products,
Customers
}
public FormType RequestedForm { get; set; }
发送表格是一个非常毫无意义的练习。表单就在那里显示数据。如果要显示某个表单,请发送所需的数据,而不是整个表单。
老实说,听起来你要么有一些非常错误的设计。或者想要一直做WebApplication。考虑一下你可能会陷入XY Problem。