I have a library containing a class with two methods (and some others that aren't relevant):
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.
}
So far so good. This library compiles.
Yet when calling .Foo<string>()
I get a MissingMethodException
. What could be causing this? Everything compiles fine.
For reference the Foo
without the generic is the legacy method, I am introducing the generic version to help with casting etc.
I agree that the MissingMethodException is due to old dlls. However, once you fix that, this still won't work. You can't implicit cast an object to a string. At runtime, your call .Foo<string>()
will call (String)Foo()
, where Foo
is of type Object
. This will basically never work unless the T you provide is already object
.
What is it you are trying to do with this piece of code? If you expect to always be using .Foo<string>()
or a subset of a few types then you could just define explicit casts for them instead.