ho trovato this article sull'argomento e provato quanto segue:C# - Lanciare eccezioni costruttore di attributo
public class FailerAttr : Attribute {
public FailerAttr(string s) {
throw new Exception("I should definitely fail!");
}
}
E nel progetto di unit test ho il seguente:
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class Test {
[TestMethod]
public void GoFail() {
// Make sure attribute will get initialized
new Failer();
}
private class Failer {
[FailerAttr("")]
public int Prop { get; set; }
}
}
Quando eseguo il test , succede. Quindi, le domande sono:
- Perché non fallire?
- È davvero una cattiva idea gettare eccezioni dagli attributi? Perché penso di aver bisogno di
Alcune informazioni ambiente (nel caso in cui sia rilevante):
- unit test vengono eseguiti tramite test runner unità di ReSharper (R # v8.2.0.2160)
- studio visivo v11.0.61030. 0
è possibile ottenere l'attributo utilizzando la riflessione? –
@KarelFrajtak Non sono sicuro, non l'ho ancora provato. Proverò tra un minuto – Dethariel
Il tuo commento '// Assicurati che l'attributo verrà inizializzato' è falso. Sarà costruito solo quando la Proprietà viene esaminata (attraverso la riflessione di solito). – Bun