Asignación de elementos de una clase a otra si los elementos son equivalentes

Di que tengo unoclass que se parece a esto:

public class Person
{
     public string Name {get; set;}
     public int Number {get; set;}
}

Y otro que se ve así:

public class Dog
{
     public string Name {get; set;}
     public int Number {get; set;}
}

Son dos clases diferentes, pero tienen exactamente los mismos elementos (una cadena llamadaName y un int llamadoNumber)

¿Hay una manera fácil en C # de, por ejemplo, si tuviera una instancia dePerson para luego crear una instancia deDog con el mismoName yNumber?

Por ejemplo si tuviera:

Person person = new Person();
person.Name = "George";
person.Number = 1;

Sé que no puedo simplemente ir:

Dog dog = person;

Porque son dos tipos diferentes. Pero, ¿hay alguna manera en C # de verificar "oh, si tienen el mismo elemento, establezca los mismos elementos deDog para igualar el dePerson. Pero siento que tiene que haber una manera más fácil que hacer algo como:

dog.Name = person.Name;
dog.Number = person.Number;

Especialmente si la clase tiene MUCHOS elementos. Además, si alguien se pregunta, estas dos clases diferentes están en dos partes diferentes de la API, por lo que tampoco puedo relacionarlas.

Respuestas a la pregunta(4)

Su respuesta a la pregunta