gpt4 book ai didi

c# - .Net - 序列化对象

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:59 24 4
gpt4 key购买 nike

如果我的对象具有类型对象的属性或泛型对象,我该如何序列化它?

例如。

public class MyClass
{
public Object Item { get; set; }
}

public class MyClass<T>
{
public T Item { get; set; }
}

编辑

我的通用类现在看起来像这样:

public class MyClass<T>
{
public MySubClass<T> SubClass { get; set; }
}

public class MySubClass<T>
{
public T Item { get; set; }
}

附加问题:如何在运行时将 Item 的元素名称更改为 typeof(T).Name?

最佳答案

您是否尝试过[Serializable] 属性?

[Serializable]
public class MySerializableClass
{
public object Item { get; set; }
}

[Serializable]
public class MySerializableGenericClass<T>
{
public T Item { get; set; }
}

尽管泛型类只有在泛型类型参数也是可序列化的情况下才可序列化。

据我所知,没有办法将类型参数限制为可序列化。但是您可以在运行时使用静态构造函数进行检查:

[Serializable]
public class MySerializableGenericClass<T>
{
public T Item { get; set; }

static MySerializableGenericClass()
{
ConstrainType(typeof(T));
}

static void ConstrainType(Type type)
{
if(!type.IsSerializable)
throw new InvalidOperationException("Provided type is not serializable");
}
}

关于c# - .Net - 序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com