obtenir les champs de la réflexion

Je veux obtenir tous les champs ont des valeurs null, mais je n'est pas même l'obtention de tous les champs:

  [Serializable()]
public class BaseClass
{
    [OnDeserialized()]
    internal void OnDeserializedMethod(StreamingContext context)
    {
        FixNullString(this);
    }

    public void FixNullString(object type)
    {
        try
        {
            var properties = type.GetType().GetFields();


            foreach (var property in from property in properties
                                     let oldValue = property.GetValue(type)
                                     where oldValue == null
                                     select property)
            {
                property.SetValue(type, GetDefaultValue(property));
            }
        }
        catch (Exception)
        {

        }
    }

    public object GetDefaultValue(System.Reflection.FieldInfo value)
    {
        try
        {
            if (value.FieldType == typeof(string))
                return "";

            if (value.FieldType == typeof(bool))
                return false;

            if (value.FieldType == typeof(int))
                return 0;

            if (value.FieldType == typeof(decimal))
                return 0;

            if (value.FieldType == typeof(DateTime))
                return new DateTime();
        }
        catch (Exception)
        {

        }

        return null;
    }
}

Et puis j'ai une classe :

    [Serializable()]
public class Settings : BaseClass
{
    public bool Value1 { get; set; }
    public bool Value2 { get; set; }
}

Mais quand j'arrive à

 var properties = type.GetType().GetFields();

puis-je obtenir 0 champs, il doit trouver les 2 champs.

Est le type.getType().GetFields() de mal à utiliser ? ou suis-je envoyer dans la mauvaise classe de la classe de base?

InformationsquelleAutor syncis | 2011-06-18