C # 7: ¿Cómo puedo deconstruir un objeto en un solo valor usando una tupla?

Una de las nuevas características de C # 7 es la posibilidad de definir deconstructores para clases y asignar los valores deconstruidos directamente a una tupla de valores.

Sin embargo, en el caso de que el objeto se deconstruya en un solo valor, no puedo encontrar una manera de asignarlo a una tupla. Aunque hay un tipo para tuplas con un solo elemento (ValueTuple<T>), la sintaxis abreviada con paréntesis no funciona aquí. La única forma en que encontré acceder al deconstructor fue llamar alDeconstruct método directamente, pero esto elimina su beneficio, ya que podría usar cualquier método para este fin.

¿Alguien sabe una mejor manera de deconstruir un objeto en un solo valor?

Aquí está mi código de prueba:

class TestClass
{
    private string s;
    private int n;
    public TestClass(string s, int n) => (this.s, this.n) = (s, n);
    public void Deconstruct(out string s) => s = this.s;
    public void Deconstruct(out string s, out int n) => (s, n) = (this.s, this.n);
}

static void Main(string[] args)
{
    var testObject = new TestClass("abc", 3);

    var (s1) = testObject; // sytax error (comma expected)
    ValueTuple<string> t = testObject; // error: "no implicit conversion from TestClass to (string)"
    testObject.Deconstruct(out string s2); // this works
    var (s3, n) = testObject; // no problem

    Console.WriteLine($"{s1} {t.Item1} {s2} {s3} {n}");
    Console.ReadKey();
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta