Para el beneficio de los que la tierra aquí a través de Google (o Bing :-))
Assert.IsAssignableFrom<T>(object actual)
está destinado a comprobar si el objeto que está siendo examinado puede ser sustituido por el T. tipo Efectivamente, lo que esto significa es que la afirmación está probando un "es-a" relación entre el objeto examinado y el tipo T.
a ver algo de código (simplificado intencionalmente):
// The Base class
public class Employee
{
public int EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfJoining { get; set; }
}
// The derived class
public class Manager : Employee
{
public IList<Employee> EmployeesReporting { get; set; }
}
Ahora la afirmación:
// NOTE: using Assert = NUnit.Framework.Assert;
[TestMethod]
public void Test_IsAssignableFrom()
{
var employee = new Employee();
// Manager is-a Employee, so the below is true
Assert.IsAssignableFrom<Manager>(employee);
}
Considerando que el IsInstanceOf<T>(object actual)
está destinado a comprobar si el objeto que está siendo probado es (como el nombre sugiere) una instancia de tipo T - pocas palabras, si "actual" es el tipo T o un tipo derivado de T
[TestMethod]
public void Test_IsAssignableFrom()
{
var manager = new Manager();
// Manager derives from Employee so the below is true
Assert.IsInstanceOf<Employee>(manager);
}
EDITAR Resulta que, éstos afirma trabajar de la misma manera como los métodos Type.IsAssignableFrom y Type.IsInstanceOf en System.Type
Ah, eso funciona. Gracias. ¿Cuál es el propósito de 'IsAssignableFrom' entonces? – gcso
@gsco, vea mi respuesta a continuación – dotnetguy