Solución:
Usa el método estático Guid.NewGuid()
en lugar de llamar al constructor predeterminado.
var responseObject = proxy.CallService(new RequestObject
{
Data = "misc. data",
Guid = Guid.NewGuid()
});
Lecciones para aprender de esto:
1) Guid es un tipo de valor, no un tipo de referencia.
2) Llamar al constructor predeterminado new S()
en cualquier tipo de valor siempre le devuelve la forma todo cero de ese tipo de valor, sea lo que sea. Lógicamente es lo mismo que default(S)
.
Prueba esto en su lugar:
var responseObject = proxy.CallService(new RequestObject
{
Data = "misc. data",
Guid = new Guid.NewGuid()
});
Esto generará un valor Guid “real”. Cuando nuevo un tipo de referencia, le dará el valor predeterminado (que en este caso, son todos ceros para un Guid).
Cuando crea un nuevo Guid, lo inicializará a todos los ceros, que es el valor predeterminado para Guid. Es básicamente lo mismo que crear un “nuevo” int (que es un tipo de valor, pero puede hacerlo de todos modos):
Guid g1; // g1 is 00000000-0000-0000-0000-000000000000
Guid g2 = new Guid(); // g2 is 00000000-0000-0000-0000-000000000000
Guid g3 = default(Guid); // g3 is 00000000-0000-0000-0000-000000000000
Guid g4 = Guid.NewGuid(); // g4 is not all zeroes
Compare esto con hacer lo mismo con un int:
int i1; // i1 is 0
int i2 = new int(); // i2 is 0
int i3 = default(int); // i3 is 0