我想制作一個序列化程式,為此我必須檢查當前物件的型別是否可以保存多個值。(我所說的基本型別是字串和整數)
我知道互聯網上有很多很棒的序列化器,但我這樣做是一個挑戰,而且它們中的大多數都沒有我想要的功能
我猜整數和字串也是類,但我想要的是這樣的:
bool CheckIfBaseType(object value) { return //check }
我認為沒有正確的方法可以做到這一點,而不是將每個基本型別保存在一個陣列中
編輯:
我想我可以使用反射來檢查是否有任何公共變數,但有沒有更好的方法來做到這一點?
編輯2:
好的,我將嘗試再解釋一下,所以我真正想要的是一個可以檢測一個值是否可以保存另一個值的函式,以便我可以檢查子值
演算法解釋:
if(objectCanHoldValues(value))
{
//switch the target object to the child object and check if
it can hold a value (this part is done)
}
當我說您的解決方案不起作用時,請不要不喜歡。如果我犯了錯誤,我對堆疊溢位真的很陌生,對不起
uj5u.com熱心網友回復:
這就是你要找的東西?
public static class TypeExtensions
{
private static HashSet<Type> otherScalarTypes = new HashSet<Type>
{
typeof(string), typeof(Guid), typeof(DateTime),
typeof(DateTimeOffset)
};
public static bool IsScalar(this Type type)
{
return type.IsPrimitive || otherScalarTypes.Contains(type);
}
}
請注意,Boolean、Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64、IntPtr、UIntPtr、Char、Double 和 Single 是原始型別。
然后您可以檢查它是否是“基本型別”:
if (obj.GetType().IsScalar())
{
}
uj5u.com熱心網友回復:
使用 .Net Reflection 檢查 IsPrimitive、IsArray 或其他型別
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480454.html
上一篇:基于給定資料的類行為
下一篇:如何獲取JS物件并將其傳回?