.NET, Architecture, ALM, Cloud
Un nouveau mot clef est apparu avec C# 6.0 : "nameof".
Késako ? "nameof" va vous permettre de récupérer sous forme de string n'importe quel élément (paramètre, nom de classe, nom de méthode...).
Premier exemple pour indiquer qu'un paramètre requis d'une méthode est manquant :
public void TestMethod(string requiredParam)
{
if (requiredParam == null)
throw new ArgumentNullException(nameof(requiredParam));
}
L'intérêt ? Avant C# 6.0 nous aurions été obligé d'écrire la ligne de code suivante :
throw new ArgumentNullException("requiredParam");
Le principal avantage de "nameof" est que quand vous allez faire de refactoring sur votre paramètre pour le renommer, celui-ci sera aussi modifié pour la gestion de votre exception contrairement au deuxième exemple.
Comme les montre les exemples ci-dessous, "nameof" peut être utilisé dans différents cas de figure :
namespace UnitTestProject
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod()
{
Assert.AreEqual<string>("TestMethod", nameof(TestMethod));
Assert.AreEqual<string>("TestClassAttribute",
nameof(TestClassAttribute));
Assert.AreEqual("TestMethod",
nameof(UnitTestProject.UnitTest1.TestMethod));
Assert.AreEqual<string>("UnitTestProject",
nameof(UnitTestProject));
}
}
public void TestMethod(string requiredParam)
{
if (requiredParam == null)
throw new ArgumentNullException(nameof(requiredParam));
}