I find this behavior of TryCast in .NET 4.0 / VS 2010 rather confusing. In my understanding TryCast works like DirectCast, but will return Nothing instead of throwing an exception if a cast is not possible. VS 2010 / .NET 4
Possible Duplicate: Why use TryCast instead of Directcast ? I want to know about the trycast and direct cast in vb.net. What is the difference between them?
Ever since I moved from VB6 to VB.NET somewhere in 2005, I've been using CType to do casting from one data type to another. I do this because it is simply faster to type, used to exist in VB6 and I do not know why I have to be using DirectCast if there is apparently no difference between them.I use TryCast once in a while because I understand that sometimes casting can fail. I however cannot get the difference between CType and DirectCast.
This assignment works for me TryCast(Me.NamingContainer, LDHello).ToggleChartConfigurationSections = AddressOf LD_SayHello whereas Dim objLDHello As LDHello = TryCast(Me.NamingContainer, LDHello) AddHandler objLDHello.LoveAndLoveOnly, AddressOf LDSayHello fails with an error message like LoveAndLoveOnly is not an event of Universal.LDHello. Visual Studio intellisense is able to pickup the event whereas the background vbc and build compiler are failing. When I need to stack multiple subscribers to the event I need to use AddHandler right?
I am replacing an AutoHotkey script with a VB.net application. Part of the script involves sending keystrokes to an active application. VB uses SendInput and does send the keystrokes, but the application doesn't "get" them, but when AutoHotkey sends the same key to the same application, it works. I have verified that VB is indeed sending the keys properly. Does anyone know how to imitate the autohotkey Send function?
I am setting attributes for SmtpClient in program. It works fine in windowsxp but in windows7, it does not work every time. Some time it works and some time fails with failure message. Is there any known issue with SmtpClient in windows 7?
I have a simple unit test which tests that a validation function picks up a specific validation issue. The validation item returns a simple object with Item & Message properties. I've written a unit test for this function but this always fails even though I know the function works as expected.
<TestMethod()> Public Sub ContractNote_ValidateForManualInputTest_TradeOrderValueComparison() 'Can't get this test to work even though validation works! Dim CN As ContractNote = New ContractNote Dim Trade As New TradeOrder
[code].....
I've implemented IComparable on ValidationItem (I have a separate unit test which confirms this works). Am I Using CollectionAssert correctly?
I receive this error: [code]whenever I run a query via a visual studio project in vb.net. If I run the same query via Open Office Base, it takes a long time but it works. How do I go about troubleshooting whats causing this?
Enviro: 2007 Exchange Server, 2 Intranet servers (1 deploy, 1 dev) running .NET 2.0 app - all within same network / behind firewall. I am working on a legacy app by our previous web guy, when our sysadmin upgraded to exchange 2007 and put it on a new server all of the mail functions in old app broke. Had to upgrade to .NET 2.0 (from 1.x) and nothing worked untill I tried new SMTP code in a local function in the codebehind of a page of the app instead of calling a class, as follows:
Function SendNow(ByVal strFrom As String, ByVal strTo As String, ByVal strSubject As String, ByVal strBody As String) As Object Dim msg As New MailMessage() Dim smtp As SmtpClient
[code]....
So the above works fine, in that file. The problem is that the app was designed to call a class that resides on the dev server. When I move this same code into the class on the dev server I get transport errors. I think this has to do with the fact that we're using integrated authentication with impersonation=true and it seems to get dropped due to the class being on a different server (even though it's behind our firewall).
I could either try moving the classes to the production server or somehow keep the authentication in the class working through the hops. Either way I need to keep the class because it's referenced all over the place (in more than just this app). I am not that savvy in .NET and I cannot figure out where the setting is within the app that defines where the class is imported from. It just seems to be available no matter where the app is deployed. (Working files are on same server as classes, then publish the app to production server).
I am writing some code in VB.Net under .NET 2.0 which interfaces with MS Exchange 2003.Because of the Exchange 2003 "requirement" I am forced to write this code using WEBDAV.The code itself is replicating, to some degree,a schedule management process.It's creating Appointments on the Exchange Server in response to inputs from the user and managing it's data internally in a SQL Server database.The problem situation is this: A new person is assigned to be in charge of a meeting. The requirement says the program should generate a meeting cancellation request to the person removed from the meeting (if such a person existed) and a meeting request sent to the new person.In the case of there being an existing person, what appears to happen is this:
The meeting cancellation request
gets sent Exchange barfs and returns status code 500 (internal server error) during the set of requests which send the meeting request to the new person.However! While debugging this particular scenario, it works just fine for me, if I step through the code in the Visual Studio debugger. Left to it's own devices, it fails every time.Just for yuk's sake, I added a Thread.Sleep(500) to the part after sending the cancellation request, and Exchange doesn't barf anymore...
So, my question! If adding a Thread.Sleep to the code causes this error to go away, a race condition is implied, no? But, my code is running under a web application and is a totally single threaded process, from start to finish. The web requests I am sending are all in synchronous mode so this shouldn't be a problem. [code]....
...but a lot of the implementation details are hidden here, as I wrote a set of classes to interface with Exchange WebDAV.
I want to see if try cast can convert user entered answer to the type I have specified. Here's what I have: Dim t as type = GetType(myType) Dim ans = console.readline() If TryCast(ans, t) <> Nothing Then ... 'Doesn't work` In the example above the intelisense doesn't even show t. How to make it work?
Here is a test program I wrote to explore a facet of object casting ... Module Module1 Sub Main() Dim class1 As MyBaseClass = New MyBaseClass() Dim class2 As MyInheritedClass = New MyInheritedClass() Dim class3 As MyBaseClass = Nothing [Code] ..... The problem comes with the TryCast statement on class3. My intention is that class3 remains as a baseclass, but when the TryCast is applied, class3 morphs itself into an Inherited class which is not what I wanted. So is there a gap in my OOP/VB.NET knowledge and this action is legitimate or should class3 still be regarded as a base class?
Does C# have an equivalent to VB.Net's DirectCast?I am aware that it has () casts and the 'as' keyword, but those line up to CType and TryCast.To be clear, these keywords do the following;CType/() casts: If it is already the correct type, cast it, otherwise look for a type converter and invoke it. If no type converter is found, throw an InvalidCastException.
TryCast/"as" keyword: If it is the correct type, cast it, otherwise return null.DirectCast: If it is the correct type, cast it, otherwise throw an InvalidCastException.
EDIT: After I have spelled out the above, some people have still responded that () is equivalent, so I will expand further upon why this is not true.
DirectCast only allows for either Narrowing or Widening conversions on inheritance tree, it does not support conversions across different branches like () does.ie: C#, this compiles and runs:
//This code uses a type converter to go across an inheritance tree double d = 10; int i = (int)d;
i am using code to the value textbox2.text in the report and using the code like below [code]the textbox2 take various values in run time but when i run the code it display only the final value intermediated values are not displayed the whole situation is as follows.[code]
I have a very simple problem where I have a MyList As List(Of MyBaseClass) but and a couple of MySub(ByVal Dummy As MyDerivedClassA)/MySub(ByVal Dummy As MyDerivedClassB). So I want to do the following ...
For Each MyInstance As MyBaseClass In MyList MySub(DirectCast(MyInstance, MyInstance.GetType()) ...
I learned how to use DirectCast over the last few days and it's really helped me. However, I have a similar issue, instead of textboxes I am looking at variables that are referenced in the class.To bring you all up to speed, I have four variables, a Boolean that dictates each of the 4 players I have playing my game. [code] I would assume it'd work similar to DirectCast but I am unsure. What I came up with caused errors: [code]
I am an experienced C/C++/C# programmer who has just gotten into VB.NET. I generally use CType (and CInt, CBool, CStr) for casts because it is less characters and was the first way of casting which I was exposed to, but I am aware of DirectCast and TryCast as well. Simply, are there any differences (effect of cast, performance, etc.) between DirectCast and CType? I understand the idea of TryCast.
I have an SQL query that gets a max value so that I can decide the next value to use in an ID field. The code works fine when there's a matching result, but if the query returns Null, it throws a Specified Cast is Invalid error.This is the code I'm using:
LastID = DirectCast(SQLQuery.ExecuteScalar(), Integer) What would be the proper way to check for a null value?
I suspect this is going to be one of those cases where within 2 minutes of posting myquestion, I finally hit upon the right combination of terms in Google to find what I'm looking for...
I usually avoid VB's built-in conversion functions (CStr, CDate, CBool, CInt, etc.) unless I need to do an actual conversion. If I'm just casting, say from an object to a string, I normally use either DirectCast or TryCast, under the assumption that CStr, etc., are doing some extra stuff I don't need. But sometimes the DirectCast syntax is a little cumbersome, as in the following example.[code]SqlDataReader.Item returns an Object, which needs to be cast to a String. CStr is easier to read, type, and explain (IMO). My question is, does it matter which one I use? Should I just go with CStr (and CDate and CBool, etc.) and not worry about the extra work I assume those functions are doing? Is there any other downside to using these functions?
I turned option strict on, wich gave me some errors. The errors are quite easy to fix, but it seems like there are several ways of doing things. [code] 'previoustime' is declared as a TimeSpan, and the column "sluttid" is defined as a TimeSpan-column.Now, as far as I know, there are two ways of solving this; using CType and using DirectCast, like this: [code]
Does DirectCast, ctype, etc., are common function? Why it return type, and how do I used it? Is there others function where I need learn to be dot net expert?
I'm helping a colleague develop a "catch all" type error handler for some controls his application. What he wants to do is pass the object that has the error, and the type of that object, such a TextBox or ComboBox, and then call the DirectCast method within his handler to properly address the Text attribute within it. In general, the method is looking like this:
Protected Sub SpecialErrorHandler(ByVal TargetControl As Object, ByVal ControlType As String) MessageBox.Show("Bad Juice: " & DirectCast(TargetControl, ControlType(ObjType)).Text) End Sub
So far any attempts to do a type conversion within the DirectCast method (since it is expecting an object in the general signature) or to even pass in the a Type object properly set is not working.
Any ideas here, or is this one of those "Casting doesn't work that way." type scenarios?
Public Sub FB(OF T0 As IGH_Goo, T1 As IGH_Goo) _ (ByVal A As DataTree(Of T0), _ ByVal B As DataTree(Of T1)) Dim val_A As T1 = DirectCast(A.FirstItem, T1) End Sub