我正在尝试在C#类库项目(最新的.NET版本)中使用 [Serializable] 属性,但无法识别。
据我所知,Serializable是属于 System.Runtime.Serialization 系统的东西,但是我已经使用过它,但它仍然没有用。
我在其他项目(Unity)中使用它,但它在这里不起作用。有什么想法吗?
using System;
using System.Runtime;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Collections.Generic;
namespace Model{
[Serializable]
public struct GameSettings{
public int Players;
}
}
提前谢谢
编辑:格式 Edit2:错误的屏幕截图
答案 0 :(得分:2)
此属性位于System
,而不是System.Runtime.Serialization
:
namespace System
{
/// <summary>Indicates that a class can be serialized. This class cannot be inherited.</summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, Inherited = false)]
[ComVisible(true)]
public sealed class SerializableAttribute : Attribute
{
//...
}
}
您确定引用了mscorlib.dll
吗? This question可能对你很有兴趣。
答案 1 :(得分:2)
https://apisof.net/catalog/System.SerializableAttribute显示[Serializable]
在.NET Core 1.0和1.1以及.NET Standard 1.6的System.Runtime.Serialization.Formatters
包中定义。然后,它转移到.NET Core 2.0的System.Runtime和.NET Standard 2.0的netstandard
monolith。
如果您只关心能够编译共享代码,可以尝试添加包引用。但是What is the equivalent of [Serializable] in .NET Core ? (Conversion Projects)已经回答说二进制序列化器不在.NET Core 1.x中(不确定它的2.0状态......但是因为2.0在预览中你总是可以尝试一下)。