473,396 Members | 2,106 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

Bug in .NET 1.1

Recently I had to write a custom user control which requires lots of
drawing. When surfing .NET framework 1.1 source with Lutz Roeder's .NET
Reflector, I happened to find something: class System.Drawing.SR
contains 2 methods GetDouble(CultureInfo, string) and
GetFloat(CultureInfo, string), I paste the source code here:

public static double GetDouble(CultureInfo culture, string name)
{
double num1 = 0;
SR sr1 = SR.GetLoader();
if (sr1 == null)
{
object obj1 = sr1.resources.GetObject(name, culture);
if (obj1 is double)
{
num1 = (double) obj1;
}
}
return num1;
}

Note that the class implements singleton pattern, SR.GetLoader static
method returns the single instance of the class (it uses
double-checking and locks on typeof(SR)).

It is clear that the author of this method expects a
NullReferenceException. It should have been "if (sr1 != 0)". The same
error appears in GetFloat method. Other similar methods of the class
(like GetInt) does not have that error.

Although these two methods were not used (the Analyze feature of
Reflector tells me so), they appear funny to me :). I did not think
there are such things in the framework.

I will check this on .NET Framework 2.0.

Regards,
Thi

Mar 9 '06 #1
3 2036
Truong Hong Thi,

Implementing design time support for controls require a lot of digging into
the framework code. We are so happy to have this excelent tool - Reflector
thanks to Lutz.

The more you dig the more bugs like this you can find. But don't be so hard
on the MS guys I believe if we look at ours code we can find bug like this
also. The class is internal - not supposed to be used and as you said it is
not used anywhere in the assembly, so what's the big deal. I believe if they
used it they would've found this problem.
I was currious and check in v2.0 this and many other GetXXX methods are
completely gone.
--

Stoitcho Goutsev (100)

"Truong Hong Thi" <th*****@gmail.com> wrote in message
news:11**********************@z34g2000cwc.googlegr oups.com...
Recently I had to write a custom user control which requires lots of
drawing. When surfing .NET framework 1.1 source with Lutz Roeder's .NET
Reflector, I happened to find something: class System.Drawing.SR
contains 2 methods GetDouble(CultureInfo, string) and
GetFloat(CultureInfo, string), I paste the source code here:

public static double GetDouble(CultureInfo culture, string name)
{
double num1 = 0;
SR sr1 = SR.GetLoader();
if (sr1 == null)
{
object obj1 = sr1.resources.GetObject(name, culture);
if (obj1 is double)
{
num1 = (double) obj1;
}
}
return num1;
}

Note that the class implements singleton pattern, SR.GetLoader static
method returns the single instance of the class (it uses
double-checking and locks on typeof(SR)).

It is clear that the author of this method expects a
NullReferenceException. It should have been "if (sr1 != 0)". The same
error appears in GetFloat method. Other similar methods of the class
(like GetInt) does not have that error.

Although these two methods were not used (the Analyze feature of
Reflector tells me so), they appear funny to me :). I did not think
there are such things in the framework.

I will check this on .NET Framework 2.0.

Regards,
Thi

Mar 9 '06 #2
Yes, thay were removed in v2.0.

In both versions, the class SR (I guess it is "System Resources") is
used in many other places, like System.SR (in System.dll),
System.Windows.Forms.SR, System.Web.SR. Microsoft had to copy the same
class to other assemplies because they did not want to expose it. It is
not a good thing copying code around, and it is an sign that the we
lack something for this. I expect future version of C# would support an
access specifier (or some kind of attribute to place on public stuff)
like "same evidence" which allow access by assemblies of the same
evidence (same strong name, for example).

Isn't this a good idea?

Mar 10 '06 #3
Truong Hong Thi,

I believe SR has something to do with resources, but .NET privides good API
for managing resources anyway.

MS implmentation of the platform is tied to the Windows OS, so there are
many internal classes that use native methods. No one should care about
their existance because the API has to be platform indipendent (except
Windows Forms).

Imagine that there wasn't reflection or Reflector-like tools, you'll never
know about classes like SR and you'll never made this post in the first
place :).

Even though I say that, many times a day I hade the fact that some class or
member is declared internal and I whish I could use it. I found thought that
more often than never the internl functionality is somewhere exposed thru
some public class or service, but it needs a lot of digging to find it.
Analyze feature of the Reflector helps big times, but not always.
--

Stoitcho Goutsev (100)

"Truong Hong Thi" <th*****@gmail.com> wrote in message
news:11**********************@e56g2000cwe.googlegr oups.com...
Yes, thay were removed in v2.0.

In both versions, the class SR (I guess it is "System Resources") is
used in many other places, like System.SR (in System.dll),
System.Windows.Forms.SR, System.Web.SR. Microsoft had to copy the same
class to other assemplies because they did not want to expose it. It is
not a good thing copying code around, and it is an sign that the we
lack something for this. I expect future version of C# would support an
access specifier (or some kind of attribute to place on public stuff)
like "same evidence" which allow access by assemblies of the same
evidence (same strong name, for example).

Isn't this a good idea?

Mar 10 '06 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: William C. White | last post by:
Does anyone know of a way to use PHP /w Authorize.net AIM without using cURL? Our website is hosted on a shared drive and the webhost company doesn't installed additional software (such as cURL)...
2
by: Albert Ahtenberg | last post by:
Hello, I don't know if it is only me but I was sure that header("Location:url") redirects the browser instantly to URL, or at least stops the execution of the code. But appearantely it continues...
3
by: James | last post by:
Hi, I have a form with 2 fields. 'A' 'B' The user completes one of the fields and the form is submitted. On the results page I want to run a query, but this will change subject to which...
0
by: Ollivier Robert | last post by:
Hello, I'm trying to link PHP with Oracle 9.2.0/OCI8 with gcc 3.2.3 on a Solaris9 system. The link succeeds but everytime I try to run php, I get a SEGV from inside the libcnltsh.so library. ...
1
by: Richard Galli | last post by:
I want viewers to compare state laws on a single subject. Imagine a three-column table with a drop-down box on the top. A viewer selects a state from the list, and that state's text fills the...
4
by: Albert Ahtenberg | last post by:
Hello, I have two questions. 1. When the user presses the back button and returns to a form he filled the form is reseted. How do I leave there the values he inserted? 2. When the...
1
by: inderjit S Gabrie | last post by:
Hi all Here is the scenerio ...is it possibly to do this... i am getting valid course dates output on to a web which i have designed ....all is okay so far , look at the following web url ...
2
by: Jack | last post by:
Hi All, What is the PHP equivilent of Oracle bind variables in a SQL statement, e.g. select x from y where z=:parameter Which in asp/jsp would be followed by some statements to bind a value...
3
by: Sandwick | last post by:
I am trying to change the size of a drawing so they are all 3x3. the script below is what i was trying to use to cut it in half ... I get errors. I can display the normal picture but not the...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.