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建议的单元测试一样,它有大量的类,每次我添加一个新批时,我都担心我忘记了一个。我想知道我是否可以使用反射来获取名称空间中的所有类……如果您不能立即找到您的可序列化类,那么您就做错了。这是一种错误,当您需要维护此代码并对这些类中的任何一个进行更改时,它确实会伤害您。并发现这样的变化使旧数据无法读取的困难之处。