Il y a beaucoup de façons de l'utiliser. Une façon dont je l'utilise est dans les tests unitaires quand j'ai besoin de corrompre une variable privée pour faire échouer un test unitaire (pour simuler des scénarios de test de défaillance). Par exemple, si je veux échouer à l'échec d'une connexion à la base de données, alors je pourrais utiliser la méthode ci-dessous pour modifier la variable privée connectionString
dans une classe qui fonctionne avec la base de données. Cela provoquerait l'échec de la connexion DB lorsque j'essayais de me connecter à la base de données, et dans mon test unitaire je peux vérifier que l'exception correcte est levée.
Ex:
/// <summary>
/// Uses reflection to set the field value in an object.
/// </summary>
///
/// <param name="type">The instance type.</param>
/// <param name="instance">The instance object.</param>
/// <param name="fieldName">The field's name which is to be fetched.</param>
/// <param name="fieldValue">The value to use when setting the field.</param>
internal static void SetInstanceField(Type type, object instance, string fieldName, object fieldValue)
{
BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
| BindingFlags.Static;
FieldInfo field = type.GetField(fieldName, bindFlags);
field.SetValue(instance, fieldValue);
}
duplication possible de [Réflexion. Que pouvons-nous réaliser en l'utilisant?] (Http://stackoverflow.com/questions/1897712/reflection-what-can-we-achieve-using-it) - et environ 50 autres questions. – Aaronaught