Todo el mundo ha cubierto lo obvio, así que aquí hay otra opción.
Si su clase debe inicializarse de alguna manera (su SomeObject
debe establecerse en algún momento), considere implementar ISupportInitialize. Esto indica a los usuarios de su clase que no se encuentra en un estado válido antes de llamar al EndInit()
. Desafortunadamente, no existe un NotInitializedException
general preexistente que pueda usar (hay algunos pero son específicos de ciertos espacios de nombres), por lo que le sugiero que empareje su implementación de la interfaz con la creación de dicha excepción.
Los usuarios deben primero llamar al BeginInit()
, luego configurar la instancia, luego llamar al EndInit()
. En la llamada al EndInit()
, verifique el estado de su instancia. Si no se inicializa correctamente, puede arrojar una InvalidOperationException. Si los usuarios intentan usar su instancia antes de inicializarse, lanzarían su NotInitializedException.
Trabaja un poco más, pero la ventaja es que está creando un "pozo de éxito" más amplio para sus usuarios, asegurándose de que usan sus clases correctamente al fallar rápido y temprano, y por la definición de su tipo (la interfaz es bastante clara en lo que esperas). También le da más "espacio", por así decirlo, para documentar cómo debe usarse su clase.
Quizás esta es una pregunta por su tema, pero ¿por qué lanzar uno? – 4imble
IMPORTANTE Nota: Una propiedad debe (casi) NUNCA lanzar una excepción cuando se lee. (InvalidOperation es uno que puede tho). http://msdn.microsoft.com/en-us/library/bb386039.aspx – FastAl