MissingMethodException, вызывающий метод с универсальным параметром
У меня есть библиотека, содержащая класс с двумя методами (и некоторые другие, которые не имеют отношения):
public T Foo<T>()
{
// Real version does some other things, but this is the gist.
return (T)this.Foo();
}
public object Foo()
{
// Do stuff and return something.
}
Все идет нормально. Эта библиотека компилируется.
Еще при звонке .Foo<string>()
Я получаю MissingMethodException
, Что может быть причиной этого? Все компилируется нормально.
Для справки Foo
без универсального метода является устаревшим, я представляю универсальную версию, чтобы помочь с кастингом и т. д.
1 ответ
Я согласен, что MissingMethodException происходит из-за старых библиотек. Однако, как только вы это исправите, это все равно не будет работать. Вы не можете неявно привести объект к строке. Во время выполнения ваш звонок .Foo<string>()
позвоню (String)Foo()
, где Foo
имеет тип Object
, Это в принципе никогда не сработает, если вы не предоставите T object
,
Что вы пытаетесь сделать с этим фрагментом кода? Если вы ожидаете всегда использовать .Foo<string>()
или подмножество нескольких типов, тогда вы можете просто определить явное приведение для них.