On 12/04/2008, Sébastien Lorion <[EMAIL PROTECTED]> wrote:
> Well, in my code I have another method similar to:
>
> void DoStuff(Type type, string input)
> {
>  object value;
>  if (TryParse(input, out value))
>  {
>    // ...
>  }
> }
>
> I made a mistake and forgot to pass "type" to TryParse. I discovered
> the bug only at runtime when testing my code. I can understand the
> compiler behavior, but it is not what I expect since I think in most
> case, the programmer did not intend to do that. A warning would be
> nice here IMO.
>
> Sébastien

I assume the warning you're looking for is something like "Generic
type inferred as Object", which would be the deliberate case for too
many situations to be a warning. (Remember that in most cases warnings
are seen as "show stoppers" -- the only valid final build is one
without any warnings.)

However, if you want it to be a warning or invalid for your code, add
an overload:

[Obsolete("Is this what you really meant?", false)]
bool TryParse(string Input, out object Value)

And when the overload resolution matches that signature, you'll get
the Obsolete warning (or error if you pass True in the
ObsoleteAttribute reference).

Regards,
Mark Hurd, B.Sc.(Ma.)(Hons.)

P.S. I've hand crafted the C# code above from this hand crafted VB.NET:

<Obsolete("Is this what you really meant?", False)> _
Function TryParse(ByVal Input As String, <Out()> ByRef Value As
Object> As Boolean

===================================
This list is hosted by DevelopMentor®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to