public static void Main()
ISImpl isImplObj = new ISImpl();
Console.WriteLine(isImplObj.Is(afirstObj, typeof(B)));
Console.WriteLine(isImplObj.Is(aSecondObj, typeof(B)));
Console.WriteLine(isImplObj.Is(aSecondObj, typeof(C)));
Console.WriteLine(isImplObj.Is(new A(), typeof(C)));
Console.WriteLine(isImplObj.Is(integr, typeof(long)));
Console.WriteLine(isImplObj.Is(integr, typeof(int)));
Console.WriteLine(isImplObj.Is(6, 6));
Console.WriteLine(isImplObj.Is(floatv, typeof(float)));
Console.WriteLine(isImplObj.Is(integr, typeof(double)));
Console.WriteLine(isImplObj.Is(ii, typeof(I)));
Console.WriteLine(isImplObj.Is(ii, typeof(C)));
Console.WriteLine(isImplObj.Is(ii, typeof(B)));
Console.WriteLine(isImplObj.Is(new D(), typeof(I)));
Console.WriteLine(isImplObj.Is(null, typeof(C)));
public bool Is(Object obj, Type typeInIs)
return obj.GetType().Equals(typeInIs) || obj.GetType().IsSubclassOf(typeInIs) || (obj.GetType().GetInterface(typeInIs.ToString()) != null);
public bool Is(Object firstObj, Object secondObj)
return firstObj.Equals(secondObj);