In addition to the extension methods of .NET 3.5, you can also create wrapper classes. In C#, you can add implicit conversion operators so they can be treated exactly like the base data types they wrap by allowing you to not have to cast to the wrapped data type when supplying this value to other methods.
class FormattedDate { public DateTime Value { get; set; } public override string ToString() { return Value.ToString( "g" ); } public static implicit operator DateTime( FormattedDate value ) { return value.Value; } public static implicit operator FormattedDate( DateTime value ) { return new FormattedDate() { Value = value }; } } Adam.. -----Original Message----- From: Discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Efran Cobisi, cobisi.com Sent: Sunday, August 10, 2008 2:43 AM To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM Subject: Re: [ADVANCED-DOTNET] Can you extend the datatypes in VB.Net Hi Greg, If you are using .NET 3.5 you could use the extension methods feature of the VB.NET/C# compiler. Just build a formatting class that holds all of the formatting logic and use it transparently on the types you need the formatting for. '-------------------- Imports System.Runtime.CompilerServices Module FormattingModule <Extension> _ Public Shared Function ToFormattedString(ByVal value As Int32) As String ToFormattedString = value.ToString("0000") End Function <Extension> _ Public Shared Function ToFormattedString(ByVal value As DateTime) As String ToFormattedString = value.ToString("MMDDYYYY") End Function End Module '-------------------- Then use it within the rest of your code: '-------------------- Console.WriteLine(123.ToFormattedString()) Console.WriteLine(DateTime.Now.ToFormattedString()) '-------------------- HTH -- Efran Cobisi http://www.cobisi.com Greg Rothlander wrote: > The data types in .Net do not have a format string with them. Is it > possible to extend the data types to add a format string? I thought I came > across an example of this back a few years ago, but I do not recall. It may > have been an example of how to create your own types. > > Can anyone think of a way to extend the data types? For example, let's say > that I want an Integer with a length of 5 and a format string of "00000". > Is there a way to do that? The same might do for a date. I might want to > set the format to "MMDDYYYY", but I would like to carry that within the data > type. > > Why? Because I have to set the format string on thousands of lines through > the program. If I was able to store it on the data type itself, I wouldn't > have to do this. If I could extend the data type I might be able to do > something like: > > Dim X as Integer = 123 > x.FormatString = "00000" > Dim str as string = X.ToString() > > str would equal "00123" > > I'm just tired of adding the format to EVERY line of code that needs the > length formatted to a 5 digits. What I have to do now is for every line of > code were X is used, I have to do something like: > > whateverstring = Format(X, "00000") > > I would rather just do something like: > > whateverstring = X.ToString() or maybe just whateverstring = X > > It seems like there would be some way to do this. It is very common in > other languages to have the format on the data type. Dates a very common > thing to run into like this. It would be nice to have the format of the > date already set by default. > > It would also be nice to have an integer with a length that doesn't change. > For example, lets say that I pull something from a database with a field > length of 5 and it has a value of 123. If I ask it the length, it will say > 3. But I need to know that the real length is 5. Why? Because the program > wants to store 00123 in the db column and not 123. The 00 is important for > the application. > > Any thoughts? Am I missing something simple here and trying to work around > something that should not be worked around? I do have some limitations > because the db needs the 00123 stored and with really mess up some of the > other programs that use the DB if I did store 123 in that field. Why? > Other applications written in other languages also use the DB and the DB is > not SQL Server. > > Any thoughts would be appreciated. > > Best regards, > Jon > > =================================== > This list is hosted by DevelopMentorR http://www.develop.com > > View archives and manage your subscription(s) at http://discuss.develop.com > > > =================================== This list is hosted by DevelopMentorR http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com