2014-11-22 3 views
-1

В моем текущем программном обеспечении я использую сериализацию и поэтому нуждаюсь во всем, что должно быть отмечено атрибутом [Serializable].Проверка наличия у всех моих классов атрибута Serializable

Есть ли простой способ проверить это, используя мою Visual Studio, не пропуская их по одному или просто ожидая, что он сработает?

Чтобы уточнить, мне не нужно знать, как проверить, является ли класс сериализуемым в коде. Я говорю об использовании IDE.

+3

Вы можете написать модульный тест для этого –

+0

не могли бы вы попробовать и сериализации все из них и посмотреть, если это работает? Как и единичный тест, предложенный @VsevolodGoloviznin –

+0

У меня есть большое количество классов, и каждый раз, когда я добавляю новую партию, я беспокоюсь, что я ее забыл. Интересно, могу ли я использовать рефлексию для получения всех классов в пространстве имен ... – Haedrian

ответ

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 
Смежные вопросы