C# 检查我的所有类是否都具有Serializable属性
在我当前的软件中,我使用序列化,因此需要用C# 检查我的所有类是否都具有Serializable属性,c#,C#,在我当前的软件中,我使用序列化,因此需要用[Serializable]属性标记所有内容 有没有一种简单的方法可以使用我的VisualStudio检查这个问题,而不用一次检查一个,或者只是等待它崩溃 为了澄清,我不需要知道如何检查类在代码中是否可序列化。我说的是使用IDE。如果您想使用反射查找未标记的类[Serializable],您可以使用反射通过获取类类型,然后只查找未标记的类。 试试这个: using System; using System.Collections.Generic; usi
[Serializable]
属性标记所有内容
有没有一种简单的方法可以使用我的VisualStudio检查这个问题,而不用一次检查一个,或者只是等待它崩溃
为了澄清,我不需要知道如何检查类在代码中是否可序列化。我说的是使用IDE。如果您想使用反射查找未标记的类
[Serializable]
,您可以使用反射通过获取类类型,然后只查找未标记的类。
试试这个:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace ReflectOnSerializableAttr
{
class Program
{
static void Main(string[] args)
{
//use Linq
var q = from t in Assembly.GetExecutingAssembly().GetTypes()
where t.IsClass && ((t.Attributes & TypeAttributes.Serializable) != TypeAttributes.Serializable)
select t;
q.ToList().ForEach(t => Console.WriteLine(t.Name));
Console.ReadKey();
}
}
[Serializable]
public class TestSerializableOne
{
public string SomeFunc() { return "somefunc"; }
}
public class TestForgotSerializable
{
private int _testInt = 200;
}
}
上述程序输出:
Program
TestForgotSerializable
你可以为它编写一个单元测试,难道你不能试着把它们全部序列化,看看是否有效吗?就像@VsevolodGolovizninI建议的单元测试一样,它有大量的类,每次我添加一个新批时,我都担心我忘记了一个。我想知道我是否可以使用反射来获取名称空间中的所有类……如果您不能立即找到您的可序列化类,那么您就做错了。这是一种错误,当您需要维护此代码并对这些类中的任何一个进行更改时,它确实会伤害您。并发现这样的变化使旧数据无法读取的困难之处。