使构造函数只接受C#中[Serializable]属性的对象

我希望我的构造函数只接受具有[Serializable]属性的对象。使构造函数只接受C#中[Serializable]属性的对象

public MyClass(object obj) 

{

}

喜欢的东西:

public MyClass(? obj) 

{

}

我怎样才能做到这一点在C#

回答:

这使我想到的第一件事是通过只允许实现ISerializable接口的对象来简化这个:

public MyClass(ISerializable obj) 

{

// ...

}

但我认为这太简单了,不是吗?

或者:

public MyClass(Object obj) 

{

if (!Attribute.IsDefined(obj.GetType(), typeof(SerializableAttribute)))

throw new ArgumentException("The object must have the Serializable attribute.","obj");

// ...

}

我认为,你甚至可以通过检查它:

obj.GetType().IsSerializable; 

以上是 使构造函数只接受C#中[Serializable]属性的对象 的全部内容, 来源链接: utcz.com/qa/257184.html

回到顶部