using System;
public interface IAb
{
int Prop1
get;
set;
}
public class A : IAb
public int Prop1
public class B : A, IAb
public string Prop2
public class Program
static class MyMethods
public static IAb CreateObject(Type t)
if (t == typeof(A))
return new A()
{Prop1 = 123};
else
return new B()
{Prop1 = 456, Prop2 = "Foo"};
public void Main()
IAb AorB = MyMethods.CreateObject(typeof(B));
Console.WriteLine(AorB.Prop1);
if (AorB is B)
// fails
// Console.WriteLine((B)AorB.Prop2); // 'IAb' does not contain a definition for 'Prop2'
// works
B newVar = (B)AorB;
Console.WriteLine(newVar.Prop2);
Console.ReadLine();