-1
在我當前使用的序列化軟件中,因此需要使用[Serializable]
屬性標記所有內容。檢查我的所有類是否具有可序列化屬性
有沒有一種簡單的方法來檢查這使用我的Visual Studio沒有一次一個地通過它們,或只是等待它崩潰?
爲了澄清,我不需要知道如何檢查一個類是否可以在代碼中進行序列化。我正在討論使用IDE。
在我當前使用的序列化軟件中,因此需要使用[Serializable]
屬性標記所有內容。檢查我的所有類是否具有可序列化屬性
有沒有一種簡單的方法來檢查這使用我的Visual Studio沒有一次一個地通過它們,或只是等待它崩潰?
爲了澄清,我不需要知道如何檢查一個類是否可以在代碼中進行序列化。我正在討論使用IDE。
如果您想使用反射來查找未標記爲[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
你可以寫爲 – 2014-11-22 17:57:21
的單元測試你能不能嘗試和序列化所有這些,看看有沒有什麼工作?像@VsevolodGoloviznin所建議的單元測試 – 2014-11-22 18:03:02
我有很多類,每次添加新批次時,我擔心我會忘記一個。我想知道是否可以使用反射來獲取命名空間中的所有類... – Haedrian 2014-11-22 18:04:45