child1 test = new Parent;
simply this isn't possible.
"your solution works but i dont want to use casting!!!"
There is no way to do something like that with or without casting, it's not allowed.
You can do this:
public class Child1 : Parent
{
public static implicit operator Child2(Child1 ch2)
{
return new Child2();
}
}
public class Child2 : Child1
{
Child2 ch2 = new Child1();
}
but not in this case:
child1 test = new Parent;