好的,让我看看能否尽可能简洁。我将以object
未知类型传递给一个方法,该方法将在内部使用BinaryFormatter
来序列化它传递的数据(我选择了这个因为我不知道数据是什么这是我能想象的最抽象的机制)。我们假设该方法看起来像目前:
public void ProvideData(Guid providerKey, ISerializable data, string dataType)...
现在让我们假设我需要确保传递给我的内容实际上可以序列化,以便为什么 我想 我会要求对象实现{{1 }}。但是,此模型的一个问题是我甚至无法传递ISerializable
,因为虽然string
string
[Serializable]
没有实现ISerializable
。
那么,构造这个方法的正确方法是什么,以确保传递给我的简单或复杂的值是可序列化的?
答案 0 :(得分:12)
您可以使用Type
上的IsSerializable属性进行检查。
例如:
bool canSerialize = myParameter.GetType().IsSerializable;
以下是最终实施,因为这个答案(非常好的答案)。它只是一个原型,所以这就是为什么这个方法没有很多,但它证明了答案。需要注意的一点是,检查ISerializable
接口是否存在没有任何价值,因为在您尝试序列化对象之前,您不会知道它是否应该实现{{ 1}}所以我在那里走错了路。
谢谢!
ISerializable