Derivé varias clases de varias excepciones. Ahora vs da una advertencia como en el título de esta pregunta.Derivado de Exception classes warning: CA2237: Mark ISerializable types with SerializableAttribute
1. ¿Puede alguien explicar las implicaciones de suprimir esta regla?
2. ¿Puede explicar la regla de here diciendo "No suprima una advertencia de esta regla para las clases de excepción porque deben ser serializables para funcionar correctamente en todos los dominios de la aplicación."?
Gracias.
P.S. Bueno, yo también tengo una respuesta. De hecho, debe marcar las excepciones como serializables. Funcionan bien sin este atributo en el mismo dominio de aplicación. Sin embargo, si intenta atraparlo desde otro dominio, tendrá que ser serializado para cruzar los límites de la aplicación. Y esa es la razón principal que encontré para esto.
Después de leer un poco y jugar con los límites de AppDomain .NET de hecho comenzó a dar sus propias excepciones diciendo que estas clases no tienen [Serializable]. Un punto interesante sobre appDomain.CreateInstance (..., classNameForThisDomain, ...) es que crea y ejecuta classNameForThisDomain en un dominio de aplicación distinto del en el que estamos ejecutando solo cuando esta clase se deriva de MarshalByRefObject. ¡Pero si no lo hace, classNameForThisDomain se cargará en el mismo appdomain! – Nickolodeon