(C #) ¿por qué Visual Studio dice que es un objeto mientras que GetType dice que es un <objeto> funcional?

C # pregunta de novato aquí. El siguiente código (tomado del libro "C # From Novice to Professional" por Christian Gross, Apress) da un error:

<code>worksheet.Add("C3", CellFactories.DoAdd(worksheet["A2"], worksheet["B1"]));
</code>

La razón es que el método.DoAdd() No acepta los argumentos dados.

<code>public static Func<object> DoAdd(Func<object> cell1, Func<object> cell2) {...}
</code>

VS afirma que ambos argumentos en la llamada de método anterior son de tipoobject mientras que el método solo aceptaFunc<object>. Pero elvalor de ambos elementos de la hoja de trabajo es de tipoFunc<object>:

<code>worksheet.Add("A2", CellFactories.Static(10.0));
</code>

donde estoStatic El método simplemente devuelve el valor dado:

<code>public static Func<object> Static(object value) { return () => value; }
// return type= Func<object>
</code>

Cuando lanzoworksheet["A2"] comoFunc<object>, el código funciona.

Pero hay algo que no entiendo. El tipo de la instancia de objeto esFunc<object>. He usado elGetType() método para ver la prueba de esto, y comparar los tipos de objetos de los elementos originales con los del objeto de conversión (que ES aceptado):

<code>Console.Writeline(worksheet["A2"].GetType());

// now cast to the correct type (why can't it do that implicitly, btw?)
Funk1 = worksheet["A2"] as Func<object>;

Console.Writeline(Funk1.GetType());
</code>

.. y todos son idénticos! (Tipo =System.Func'1[System.Object])

E incluso cuando uso el.Equals() Método para comparar ambos tipos, devuelvetrue.

Sin embargo, VS ve la primera instancia de objeto como tipoobject en el método de llamada. ¿Por qué? ¿Por qué el método llamado 've' el argumento como un tipo diferente al que devuelve GetType ()? (y si es así, ¿de qué sirve laGetType() ¿método?)

Muchas gracias por sus consejos / comentarios! (Es un poco difícil aprender el idioma si los ejemplos de libros dan un error y no se ve la razón; por lo tanto, tengo la vaga impresión de que algo está mal con cualquiera.GetType() o VS.)

Respuestas a la pregunta(3)

Su respuesta a la pregunta