public void Can_be_itself_and_object() { IType testing = BuildRoutine.VirtualType().FromBasic(); Assert.IsTrue(testing.CanBe(type.of <object>())); Assert.IsFalse(testing.CanBe(type.of <string>())); }
public void Can_be_one_of_its_assignable_types() { var virtualInterface = BuildRoutine.VirtualType().FromBasic() .Name.Set("IVirtual") .Namespace.Set("Routine") .IsInterface.Set(true); IType testing = BuildRoutine.VirtualType().FromBasic() .Name.Set("Virtual") .Namespace.Set("Routine") .AssignableTypes.Add(virtualInterface) ; Assert.IsTrue(testing.CanBe(virtualInterface)); Assert.IsFalse(testing.CanBe(type.of <string>())); }
public static bool CanBeCollection(this IType source, IType itemType) => source.CanBe <ICollection>() && source.IsGenericType && source.GetGenericArguments()[0].CanBe(itemType) || source.IsArray && source.GetElementType().CanBe(itemType);
public static bool CanBe <T>(this IType source) => source.CanBe(type.of <T>());