5

有没有办法将元数据粘合到 C# 中的对象?

上下文:通过网络在对等点之间发送消息的框架。消息可以是任意可序列化的用户定义的 .NET 类型。

当然,当对等方发送消息时,框架可以将该对象包装到一个保存元数据的 Message 类中,接收方可以将其解包。但是,对等点的处理方法可以决定将消息重新发送给另一个对等点 - 但是,我想保留原始元数据。Message.RealMessage除非重新发送,否则不应要求用户一直使用。

我考虑过将包装实例保存在字典中,并在重新发送时查找字典中是否已经存在包装实例并重新发送该实例,但是,由于消息可能根本不会重新发送(或多次重新发送),这将需要更多和更多的内存。

有什么解决办法吗?也许 C# 直接支持将附加信息粘贴到对象上?通常我会选择内部接口,但是,用户必须从框架的基类派生其所有类,这是不可能的。

编辑:我有点想说“这是 WrappedMessage 的一个对象,但你只能使用T提供的接口”。

4

1 回答 1

3

有一个ConditionalWeakTable应该比直接使用 Dictionary 做得更好。

去引用:

使编译器能够将对象字段动态附加到托管对象。

您可以忽略有关用于编译器的类的部分:-)

于 2013-09-01T15:55:16.533 回答