我希望我的構造函數只接受具有[Serializable]
屬性的對象。使構造函數只接受C#中[Serializable]屬性的對象
public MyClass(object obj)
{
}
喜歡的東西:
public MyClass(? obj)
{
}
我怎樣才能做到這一點在C#
我希望我的構造函數只接受具有[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;
你確定嗎?那個[Serializable]東西已經很老了,我們現在有更好的方法。 –
簡答:你不能做這個編譯時間。在運行時使用反射並引發異常。 –
@HenkHolterman你可以請ne更具體嗎? – Vahid