.net - Work Around The __Canon Type In Generic Exception Handlers?
Apr 10, 2009
Given an extension method like this:Public Sub RehydrateTo(Of T As New)(ByVal input As String, ByRef output As T)
[Code]...
and a type MyCollection that inherits from ObservableCollection(Of V), we find that calling someString.RehydrateTo(instanceOfMyCollection) can fail in the exception handler. The problem is that GetType(T) does not always evaluate to "MyCollection" -- while in the exception handler, it evaluates to "__Canon". ( System.__Canon being some kind of CLR magic that means a canonical instantiation of a generic )
How can we work around this?
View 1 Replies
ADVERTISEMENT
Apr 14, 2011
I'm trying to catch a user defined permission exception - i.e. a user does something their level of system access won't allow, permission exception is thrown. My problem is, the exception is caught and then rethrown as a genertic System.Exception.Is there any way I can deduce the original exception type, without resorting to string comparisons, like if ex.ToString.Contains("Permission denied"
View 2 Replies
Apr 13, 2012
Consider:
Public MustInherit Class Column
Public ReadOnly Property ReturnSomethingUseful() As Object
Get
'return something useful
[code]....
But this gives the following error:
Public Overrides Function ParseValue(sValue As String) As Boolean'
cannot override 'Public Overridable Function ParseValue(sValue As String) As Object'
because they differ by their return types.
I accept that you can't do this, but I'd like to be able to preserve the semantics of what I'm. trying to do, which is to have an untyped version that deals with Object, but a typed version in derived classes that knows about the specific type T.
View 2 Replies
Aug 14, 2010
I have a Journal that records entries for different types: Journal(Of ParentT)
[Code]....
View 2 Replies
Jun 30, 2011
I am trying to create a list of a generic type in vb.net 2.0 framework.
This is the generic type definition:
Public Class GenericParamMap(Of T)
Public Sub New(ByVal pParamName As String, ByVal pPropValue As T)
mParamName = pParamName
[Code]....
The compiler does not allow a "T" in the method's parameter because it's not defined, but I'm not sure how or where to define it. I thought it was okay to have a generic method definition.
View 2 Replies
Feb 8, 2012
I am trying to write a generic method, to avoid code duplication, which will create or activate a Form as an MDI children, based on its type. But I have to lines in error (see comments).
[Code]...
View 4 Replies
Sep 1, 2011
I'm working on a VB.Net WinForms app. This app shows rows of production lines that the user will go down row by row and print a package of ActiveReports documents. This package can contain up to 9 reports. The package is selected and told to print, it then gets sent directly to the default printer of the machine using ActiveReports' mechanism:
rpt.Document.Print(False, False, True)
These reports also use images pulled in from the file system. When they run through the rows quickly, they sometimes encounter:
A generic error ocurred in GDI+
Then followed by:
Exception of type "System.OutOfMemoryException" was thrown.
This causes some documents to not print and they have to go back and figure out which ones didn't print. I know the machine is not out of memory, so my assumption is that the printer memory is filling up or reports are trying to use the same image when printing and causing an issue there.If it is the printer memory filling up, is there any way to slow down the adding of documents to the print queue, or at least pausing to wait for space?
View 1 Replies
May 5, 2009
I'm compiling a VB.Net 2.0 app (created in VS2008) using msbuild, and now I've added a generic return type, it's giving me the following:
Warning: Type library exporter encountered a generic type instance in a signature. Generic code may not be exported to COM.
Having just spent ages removing all of the previous warnings, I don't really want to add a new one. Any idea how to get rid of it (aside from not using generics)?I don't know what details I'd put in the attribute, or what number to put in the project-level ignore list.
View 1 Replies
Sep 12, 2011
I have a question about ASP.Net, visual basic I have 2 LINQ query's, the first one works, the second one doesnt, produces a
"Unable to cast object of type 'System.Data.Objects.ObjectQuery'1[SelmaV2.Products]' to type 'System.Collections.Generic.List'1[System.String]'.
[Code]....
View 1 Replies
Dec 14, 2011
I have a generic Class I'm using to hold information loaded from a database.I have a method which takes a DataRow as an argument, uses the object's known column name and extracts the data from the DataRow, such that:Dim loadData As T = CType(myDataRow("myColumnName"), T))works as my default assignment in most cases.Unfortunately, due to some horrifying design constraints, some of my columns may be null, and may also be taken from enumerations.This means that when <T> is Nullable(Of SomeEnumeration) the above code does not work because I can't cast 0 directly to SomeEnumeration.Zero.Is there some way to check whether <T> is Nullable(Of [Enum])? Or some way to write a method which allows Integers to be cast to Nullable(Of [Enum])?I feel like I'm forgetting something that would allow me to write one of the other of these, but my weak google-fu is turning up nothing.
EDIT: Okay, thanks to dasblinkenlight's answer below, I can detect when this circumstance is occurring, but what I need to do now is to take a type <T> which I know is Nullable(Of SomeClass), get a type reference to SomeClass and then create a new object of type Nullable(Of SomeClass) and assign that to LoadData.My problem was that I had a lot of difficulty in finding any function which would accept baseType as an actual Type.Parse accepted baseType as a parameter, I knew baseType was an [Enum] type because of dasblinkenlight's code, so I was, in this instance, able to code a solution. It's a solution which is very specific to my problem (i.e., T is Nullable(of SomeEnumeration)), but it's a solution nonetheless.
View 2 Replies
Feb 14, 2012
In trying to add a bit of usage variety to a generic class I'm working on, I ran into this issue with trying to cast an object into an interface instance where the interface is defined inside the generic class.
[Code]...
View 1 Replies
Mar 30, 2010
1) VB Allows non-type template parameters2) VB supports explicit specialization 3) VB allows the type parameters to be used as the base class for the generic type4) VB allows a generic type parameter itself to to be a generic 5) VB enforces that all codes are valid for all types of parametrs
View 1 Replies
Sep 2, 2009
I have a large project where we have 2-3 dll projects that are converted from VB6 to VB.NET. We have fixed all the issues that caused compilation errors, and most of obvious issues in running, so now we have basically a program up and running. The exe is created from scratch in VB.NET, using a lot of functionality from the converted dll's (including GUI forms). What I wonder is when I run the program in debug mode, I get a bunch of warnings in the "Immediate Window" saying:
A first chance exception of type 'System.Exception' occurred in Microsoft.VisualBasic.dll
...and some of other type (but most of them in Microsoft.VisualBasic.dll).I was wondering if this is common in projects converted from VB6, or if it is caused by bad design in our code...
View 2 Replies
Jan 11, 2010
When catching an exception in .net, you can have as many type-specific exception blocks as needed. But I usually try to have at least one "general" exception catch block. But is there a way to get the type of the "real" exception thrown that is caught by the generic exception handler, perhaps using reflection?For example, if I have
Catch ex As System.ServiceModel.FaultException(Of InvalidUser)
ProcessModuleLoadException(Me, ex)
Catch ex As System.ServiceModel.FaultException(Of SQLExceptions)
[code].....
View 3 Replies
May 14, 2012
I'm getting an error after sending a list to a web service.This is the code that is calling the web service:
Dim sProgramInterest As New List(Of Integer)
crmService.InsertProspectGetId(sProgramInterest.ToList)
But I'm getting this error.
[code].....
View 3 Replies
Jan 7, 2012
And here is the code that produces the error
CODE:
How can i cast this one?
View 1 Replies
Feb 25, 2009
I wrote a class which imports System.Collections.ObjectModel. For the management of the collection, I've written:
Default Public ReadOnly Property Item(ByVal vntIndexKey As Integer) As ItemType
Get
Return CType(mCol.Item(vntIndexKey), ItemType)
[code].....
View 4 Replies
Jan 8, 2011
In vb.net, it is possible to design a function which can operate on generic parameters which meet multiple constraints. For example, it is possible to have a function accept as a parameter a class which inherits from Control and implements IList. This function could use "Control" or "IList" methods on such an object, and also pass the object to anything that expected a Control or an IList [note that this particular combination was chosen to facilitate a brief example, not to be a particularly useful combination].
[Code]...
This approach provides compile-time type-safety; there's no need for a cast that could fail at runtime. An alternative approach would be to pass the argument as either a Control or an IList, and have the function cast to the other. That would, however, fail at runtime if the object that was passed didn't in fact meet both constraints.
Under what circumstances is it good to use a generic function like the above, in what cases would it be better to have objects which are going to meet both constraints have a new interface like IListableControl(Of T) which would include a TheControl property that would return itself (cast as a control), and in what cases would it be better to have a generic ISelf(of T) interface, any implementor of which would be expected to provide a "Self" property that would return itself as a T?
Using multi-constrained generics, it's possible to do a lot of things without requiring any run-time typecasts, but I don't know what the performance costs are likely to be. I tried writing a short program to generate 65,536 different generic types at run-time, e.g. Foo(of Bar(Of Foo(Of Foo(Of Bar(Of Foo(...(Of Blah)) and it got pretty slow, so I can tell that the time required to handle generics isn't fixed, but I don't know what factors affect it.
View 1 Replies
Feb 12, 2010
I am using VB.NET 2005 to create a Windows forms application. I have a procedure named SendMail that creates an instance of Outlook.Application, to send an email from my application. I found the code on this forum, I think.The procedure works fine, but I can't use error handling with it.I call the procedure from a button click event. I put the procedure call in a try/catch block, and the application won't build, with the following error.
Error 68 'Catch' cannot catch type 'Microsoft.Office.Interop.Outlook.Exception' because it is not 'System.Exception' or a class that inherits from 'System.Exception'. C:datadevdmtiQTSQTSv7_1_20100212wQTSQTSReportsCriteria
pt_frmReportViewer.vb 43 21 QTS
Here is the code:
Sub SendMail(ByVal sFile As String)
' Create an Outlook application.
Dim oApp As Outlook._Application
[code]....
View 8 Replies
Jul 31, 2009
I'm trying to declare a generic using a variable of type System.Type, with VB 2005, and haven't found the right approach. Consider the typical:
Dim m_GenObj As MyGenericObject(of T)
Instead of using "T" I want to use a variable of System.Type, for something like:
Dim m_MyType as Type
Dim m_GenObj as MyGenericObject(of m_MyType)
But of course that doesn't work.
View 2 Replies
Mar 7, 2011
Someone (w69rdy) in Stack Overflow helped me out with a great example to handle DB output, that could potentially be NULL, passed into a function. The problem is I can understand the method as written in C# but I am having a problem understanding how to rewrite the method in VB.NET. The method uses generics and I am lost. Here is the method written in C# ..
public T ParseValue<T>(System.Data.SqlClient.SqlDataReader reader, string column)
{
T result = default(T);
if (!reader.IsDBNull(reader.GetOrdinal(column)))
[code].....
How is this written in VB.NET? How does the method signature change when returning a generic type?
View 2 Replies
Apr 29, 2009
I have the following sample code in a VB.NET console application. It compiles and works, but feels like a hack. Is there a way to define EmptyChild so that it inherits from Intermediate(Of T As Class) without using the dummy EmptyClass?
Module Module1
Sub Main()
Dim Child1 = New RealChild()[code].....
The other way to do this would be to move the generic code out of the Base class and then create 2 Intermediate classes like this [code]...
Then RealChild would inherit from the generic Intermediate and EmptyChild would inherit from the non-generic Intermediate. My problem with that solution is that the Base class is in a separate assembly and I need to keep the code that handles the generic type in that assembly. And there is functionality in the Intermediate class that does not belong in the assembly with the Base class.
View 1 Replies
Sep 9, 2010
I'm in the process of creating a function which reflects over the properties in a class and adds them to this data structure I have. Some of the properties are generic types.So say we have DataType(Of T) that has a .Value property of type T:
Dim properties = GetType(MyType).GetFields(Reflection.BindingFlags.Public Or _
Reflection.BindingFlags.Instance)
For Each prop As fieldinfo In properties
Collection.Add(prop.Name,prop.GetValue(poco))
Next
In the collection.Add for primitive types (Integer, String, etc....) I just want to add the type... but in the case of generic I want to add the DataType(Of T).Value. I hope there is some work-around but I don't think there is a way because the type of T can not be determined at compile time right? Ideally DirectCast(prop.getvalue(poco), DataType(Of T)).Value would be possible. This is when you hoped even more dynamics appear than whats in .NET 4.0.
View 2 Replies
Jul 28, 2010
This is the code I'm trying to develop:
Public Structure Statistic(Of t)
Dim maxStat As t
Dim curStat As t
[Code].....
View 2 Replies
Mar 16, 2010
I have a mutable class that I'm using as a key to a generic dictionary. Two keys should be equal only if their references are equal. From what I've read, in this case, I don't need to override Equals, GetHashCode , or implement IEqualityComparer.
View 5 Replies
Mar 24, 2010
I am looking into generics in .NET, and was wondering about the where T : struct constraint. I understand that this allows you to restrict the type used to be a value type. My question is, without any type constraint, you can do a limited number of operations on T. Do you gain the ability to use any additional operations when you specify where T : struct, or is the only value in restricting the types you can pass in?
I guess the question I am actually asking is that if I were to write, (in a discussion about how to use generics), "Now that you have constrained the type argument to value types, you can also do _________ on/with objects of that type", Is there anything to put in that blank? I can think of things for the other constraints, but not this one.
View 3 Replies
Jan 13, 2011
In VB.NET 2010, how to return a boolean value as generic type without compile warning?
View 2 Replies
May 26, 2010
I want to create a generic list - but I want to specify the type at runtime - is there a way I can do this? using reflection perhaps?Something like this...
Public Shared Sub create(ByVal t As Type)
Dim myList As New Generic.List(Of t)
End Sub
View 2 Replies
Jan 26, 2009
I have two class like this[code]...
The red code does not works. How do I get the type of data to declare, for example, a Specific Instance(Of integer) if Data is integer, and also Specific (of SomeClass) if Data is SomeClass?
View 5 Replies
Mar 21, 2012
I have a generic function in VB.Net. I also have two classes called A and B. Is it possible to allow the generic constraints on my function to allow the Type to be either class A or B? Class A and B do not share any base classes except for object.
View 1 Replies