The question as such does not make sense. There is no way for downcasting, because your clone method already returns the base class. I think you want (should) want to override the clone method in your subclass here:
public class DerivedClass : BaseClass
{
public BaseClass SimpleClone()
{
var result = new DerivedClass
{
Value1 = this.Value1,
Value2 = this.Value2,
Value3 = this.Value3,
}
return result;
}
, DerivedClass , , DerivedClass - . , . , , : " , , BaseClass, DerivedClass". , , .