在我目前的软件中,我使用了序列化,因此需要使用[Serializable]
属性标记所有内容。
有没有一种简单的方法可以使用我的Visual Studio进行检查,而无需一次检查一次,或者只是等待它崩溃?
为了澄清,我不需要知道如何检查类是否可以在代码中序列化。我在谈论使用IDE。
答案 0 :(得分:1)
如果您想使用反射来查找未标记为[Serializable]
的类,您可以使用反射通过GetTypes获取类类型,然后只查找未标记为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