Reflection - Passing Values To Constructor Of Type T?
Jun 18, 2012
I have this code to get the default constructor:
Public Function f(ByVal t As System.Type) As Object
Return t.GetConstructor(New System.Type() {}).Invoke(New Object() {})
End Function
I need to pass values to the Constructor as
Public Function f(ByVal t As System.Type) As Object
Return t.GetConstructor(New System.Type() {someInteger,someString,etc.etc}).Invoke(New Object() {})
End Function
Also I have 3 classes of Type T, with all having different parametric constructor. It's important for me to have it generic as the Classes of type T might increase in future with less or more parameters.
View 1 Replies
ADVERTISEMENT
Jan 29, 2010
I'm passing a type name and some parameters from C# code into a navigation framework written in VB. The navigation framework looks for a constructor on the type that matches the parameters passed in using Type.GetConstructor(Types()). The constructor that I'm looking for expects an array of integers Integer() in vb. But it gets an array of System.Int32. I've gone so far as to try this:
[Code]...
And the VB code still sees System.Int32 on the other end, which means that it doesn't find the constructor.
View 2 Replies
Jun 2, 2009
I've got a set of static "enumeration" classes that I'm using to hold meaningful variable names to represent meaningless code values I receive on an input file. Here's an example of one.
Public Class ReasonCodeValue
Private Sub New()
End Sub
[code].....
View 2 Replies
Feb 17, 2009
Is there a robust way to get a constructor with string parameter by reflection?I have no choice, but instantiate a class without knowing if the constructor belongs to it, a base class, or come intermediate class in the inheritance chain.
View 1 Replies
Jun 12, 2011
I have the following problem. This is a simple example of some classes I have (each have dependencies on other classes).
public Class1()
{
public Class1(Class2 class2)[code].....
The problem I have is that the assert is always null, even though class1 has been initalized. One condition I do have is that I only want there to be one instance of each class created.
View 3 Replies
Jul 15, 2010
I have an open source project I converted to vb.net. I solved all the errors, except for one. This is the C# line
[Code]....
View 4 Replies
Mar 23, 2010
.NET I want to clone a value type's fields. How can i set a field value on a value type using reflection (or something else dynamically)?
This works for reference types but not for value types. I understand why but I don't know an alternative.
shared function clone(of t)(original as t) as t
dim cloned as t
'if class then execute parameterless constructor
[Code]....
View 2 Replies
Mar 7, 2011
What I want to do is pass a Type to another object's constructor, where the other object creates a new instance of Type. I can create a constructor with a parameter declared as System.Type without problem, but when I try to instantiate it tells me there is no such type.
Public Sub New(targettype As System.Type)
Dim Test As System.Windows.Forms.Form = New targettype
End Sub
View 3 Replies
Dec 30, 2011
What I wanted to do was, given the table name (as string), use reflection to instantiate the get method for specific fields (defined as properties with Get and Set methods.
Public Property VC60() As String
Get
Return _VC60
[code].....
View 2 Replies
May 27, 2010
I am trying to write a function that has an object parameter. That object will always be an BindingList. That BindingList will be of some unknown (at design Time) class. I think I've figured out how to get the type of the collection object, but now here the tricky part. I'm trying to create a function that can handle any type of collection and be able to return an item from that collection. I need to create a new object of that type and return it from the function. [Code]
View 1 Replies
Nov 26, 2010
How do I get using reflection the most generic type from a shared constructor in the base class :
Public Class Foo()
Shared Sub New()
'Here we have code to get the type[code]....
I expect the result to be Bar type and not the Foo. Is it possible?
View 1 Replies
Dec 27, 2010
I've been having problems with following code on some computers, while it's worked super on others (most):
Dim xmlSer As New System.Xml.Serialization.XmlSerializer(GetType(XMLContext))
which produces the stacktrace:
System.ArgumentNullException: Value cannot be null.
Parameter name: type
at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
How can that code throw that exception, when the argument is drawn from a gettype call, and note that it doesn't happen when debugging on my own PC, only when it's installed on some of the client PC's???
View 15 Replies
Jun 7, 2011
I have a storedproc accepts parameters in XMLtype as
CREATE OR REPLACE PROCEDURE GetDetails(
p_para IN XMLTYPE,
[code].....
View 1 Replies
Sep 15, 2011
I am trying to create an Excel file using reflection. The reason, the application will be running on many machines some of which may or not have excel installed. I decided to embed the "Microsoft.Office.Interop.Excel.dll" and via reflection generated the excel spreadsheet. The code I am trying to resemble is:
[Code]....
View 1 Replies
Mar 12, 2010
Is there a way for a property to access its own name and type at runtime using reflection? I want to access this info without hard coding the name or index of the property in the class.
Simple Example Code:
Private ReadOnly Property MyProperyName() As String
Get
Console.WriteLine((Get Current Property Info).Type.ToString)
Console.WriteLine((Get Current Property Info).Name)
[code]....
View 1 Replies
May 26, 2010
I'm trying to create an object Of a specific type. I've got the following code, but it fails because it can't cast the new table object to the one that is already defined. I need table to start of an IEnumerable type so I can't declare is an object.
Public sub getTable(ByVal t as Type)
Dim table As Table(Of Object)
Dim tableType As Type = GetType(Table(Of )).MakeGenericType(t)
[code]....
is there a way of changing a variable type at runtime?
View 3 Replies
Sep 27, 2010
I'm attempting to dynamically register entities and configurations with a context (ef4 code-only). I would normally do:
Private Shared Sub ConfigureDatabase(ByRef Builder As ContextBuilder(Of ContextExtension))
'Load configurations for each of the tables (Entity sets) in our database...
ConfigureEntity(Builder, New ContactConfig)
End Sub
Private Shared Sub ConfigureEntity(Of T)(ByRef Builder As ContextBuilder(Of ContextExtension), ByVal config As EntityConfiguration(Of T), ByVal setName As String)
'Register the entity configuration with the builder
Builder.Configurations.Add(config)
'Register the entity set name with the builder
Builder.RegisterSet(Of T)(setName)
End Sub
Where ContactConfig is a class which inherits EntityConfiguration(Of Contact) and Contact is a class which implements an interface IEntity (IEntity is common to all entities). So... I need to search a namespace (say Project.DB.Client) for all signatures that match:
EntityConfiguration(Of <Class which implements IEntity>)
How can I achieve this?
View 1 Replies
Feb 23, 2009
I coded a class that scans an object and maps data from a data table into each one of the corresponding properties, it works very well, however I am not able to set the property of one of the child (coplex objects)
Public Class CntrConfHdr
Private m_CntrConfHdrID As Double
Private m_HeaderCode As String
[Code]...
I want to set the value for the child object TypeCurrency.TypeCurrencyID thus I set the value of the variable sTargetPropertyName to TypeCurrency.TypeCurrencyID but the application willnot work stating that the property can not be found.
View 1 Replies
Jan 16, 2012
I'm trying to check if a variable has been defined as a nullable Guid. eg.
Dim myGuid As Nullable(Of Guid) or Dim myGuid As Guid?
It seems doing a myGuid.GetType returns the underlying type, that is type Guid, not Guid?. So testing myGuid.GetType Is GetType(Guid?) always returns False.How do I find out if myGuid is a nullable type?
Ed: I can do the following, which correctly returns True for "Guid?" and False for "Guid":
Not Nullable.GetUnderlyingType(GetType(Guid?)) Is Nothing
The problem is that I don't know how to retrieve the nullable type from the variable itself, in order to test it. I've only been able to get the underlying (non-nullable) system type.
I've written a db helper function. I pass it an object comprised of public members, representing the row data of a table. The members are the table columns.Using reflection, I loop through these public members to create an INSERT statement for a command object and populate its parameters with the values in those members. So far so good.But now there's a table which has a uniqueidentifier column which I must not populate from the row object, as it defaults to "NEWID()" (using SQL Server 2008). Instead of skipping all Guid columns, which would be easy, I only want to skip ones defined in the row data class as "Guid" (non-nullable).Basically, I'm using the Guid? (Nullable) type to indicate it's ok to populate that uniqueidentifier column with data. If it's non-nullable, that tells me to skip it because the column has a NEWID() default value.
View 3 Replies
Jan 5, 2011
After debugging a particularly tricky issue in VB.NET involving the order in which instance variables are initialized, I discovered that there is a breaking discrepancy between the behavior that I expected from C# and the actual behavior in VB.NET.Nota bene: This question concerns a slight discrepancy in the behaviors of VB.NET and C#. If you're a language bigot that is unable to provide an answer other than "that's why you should use C#, noob", there is nothing for you to see here; kindly move along.Specifically, I expected the behavior outlined by the C# Language Specification (emphasis added):
When an instance constructor has no constructor initializer, or it has a constructor initializer of the form base(...), that constructor implicitly performs the initializations specified by the variable-initializers of the instance fields declared in its class. This corresponds to a sequence of assignments that are executed immediately upon entry to the constructor and before the implicit invocation of the direct base class constructor. The variable initializers are executed in the textual order in which they appear in the class declaration.
Contrast that with the portion of the VB.NET Language Specification concerning Instance Constructors, which says (emphasis added): When a constructor's first statement is of the form MyBase.New(...), the constructor implicitly performs the initializations specified by the variable initializers of the instance variables declared in the type. This corresponds to a sequence of assignments that are executed immediately after invoking the direct base type constructor. Such ordering ensures that all base instance variables are initialized by their variable initializers before any statements that have access to the instance are executed.
The discrepancy here is immediately obvious. C# initializes class-level variables before calling the base constructor. VB.NET does exactly the reverse, apparently preferring to call the base constructor before setting the values of instance fields.If you want to see some code, this related question provides a more concrete example of the divergent behavior. Unfortunately, it does not provide any hints as to how one might coerce VB.NET into following the model established by C#.
I'm less interested in why the designers of the two languages chose such divergent approaches than I am in possible workarounds for the problem. Ultimately, my question is as follows: Is there any way that I can write or structure my code in VB.NET to force instance variables to be initialized before the base type's constructor is called, as is the standard behavior in C#?
View 2 Replies
May 10, 2010
I got 2 classes in a form, and I would like to pass a value from a textbox to the other class, so I decided to use Deligate.
Below is the code.
Public Delegate Sub delPassSize(ByVal text As TextBox)
'To get size from Class Calculate(Class 2)
Public Sub GetSize(ByVal txtForm1 As TextBox)
[code]....
and the error message is 'cls.Getsize is a delegate type and requires a single 'addressof' expression as the only argument to the constructor.'
View 2 Replies
Mar 19, 2012
I wish to put the XMLSerializer behind a 'facade' class of mine so that user wont have to supply type info to the constructor. But doing this has a problem. Consider this class:
Class XmlFormatter
Private Shared xs As XmlSerializer
Public Function Deserialize(ByVal serializationStream As Stream) As Object
Dim o As Object = Nothing
[code]....
The problem is that the user of this class cannot use Deserialize without first using Serialize because the XMLSerializer instance is created in Serialize and it is shared. But using Deserialize without this instance will simply return Nothing.
View 1 Replies
Feb 1, 2011
I am working on a project where my class has to execute VB code provided by the user, to make it simple I am trying to recreate my own eval function, I am using the following code I found on the web to do this task.
Imports Microsoft.VisualBasic
Imports System
Imports System.Text
Imports System.CodeDom.Compiler
Imports System.Reflection
[Code] .....
The problem with code is that it can't access any variables or there values, so I have decided to get the variable names, there values types and there types dynamically and recreate them in the class that is being created dynamically. Any way to get the variable names there types and values in the current class or method, so that I can recreate them, and execute the user passed code, the user knows what variables are in the current class or method and there datatypes but he don't know there values as they may have changed, so he can't initialize them. Is there a way to do this, this code will be called in an asp.net page on page_load event, the code passed by the user is stored in the variable vbCode that is passed as a parameter.
View 2 Replies
Dec 10, 2011
I have a parent class that is also a factory. For example:
Public Class Factory
Public Function clone() as Factory
' Some logic here
[code].....
View 2 Replies
Feb 15, 2010
I have an abstract class which requires a delegate to function. I pass the delegate into the constructor. Now that I have a non default constructor I need to call the abstract class's constructors from the concrete class which means that I need to use MyBase.New(...). I have included a quick example below.
Public MustInherit Class BaseClass
Public Delegate Sub WorkMethod()
Private _Work As WorkMethod
[code]....
I have tried to do this but I keep getting the following error: "Implicit reference to object under construction is not valid when calling another constructor".Can I not do what I am trying to do above? I initially had the delegate setup in its own setter method. But then I am creating a deceptive API because it does require a point to a method to work properly.
View 3 Replies
Nov 2, 2009
what's the rationale behind this limitation: Constructor call is valid only as the first statement in an instance constructor i want to pass an argument to my constructor which validates this argument and calls mybase.new according to this argument but it doesn't let me
example:
Public Class prob
Inherits System.ApplicationException
Public Sub New(ByVal problem As String, ByRef inner_exception As Exception)
[code]....
View 16 Replies
Feb 6, 2010
I am working on a card game, and i get this werid error:
A first chance exception of type 'System.Reflection.TargetParameterCountException' occurred in System.Windows.Forms.dll
The code that is cousing this error is:
Private Delegate Sub ShowcardDelegate(ByVal test As String, ByVal objtest As Object, ByVal value As Boolean)
Private Sub Showcard(ByVal test As String, ByVal objtest As Object, ByVal value As Boolean)
If objtest.InvokeRequired Then
[code].....
View 10 Replies
Aug 12, 2010
I'm using VB.NET 2003 with .NET Framework v1.1. I know it's getting a bit old now but I'm stuck with an existing program and don't have the time/knowhow to convert it to anything newer.
My question would probably be solved very easily with Generics in .NET 2.0 but as I can't use that right now, I'd like to know if the following is possible:
I have a load of manager classes which inherit from DictionaryBase and hold collections of my custom classes. For example, I have a Employee class, a Batch class, a Supplier class, etc... and each of these has a Manager classwhich holds a collection of them - eg: my PlantTrayMgr class holds collections of PlantTrays, etc..
I have one particular form where I have to populate loads of comboboxes with the contents of various Manager objects. What I currently do in my form load event to populate comboboxes is this:
Code:
Option Strict On
Option Explicit On
Private _plantTrayMgr As PlantTrayMgr
[Code].....
View 4 Replies
Jun 11, 2009
I have had several occasions recently to access a specific class several times over a relatively small time frame.So I've been storing the value of the class in Session and trying to access it on page load, if it's not available creating a new instance and storing that in session.
So instead of constantly replicating the same code for different classes on different pages I'm trying to create an extension method to do this for me.
[Code]...
I'm stuck on what to do when I make my new instance of my class (it would have to have a New() sub)
I'm not sure where to go from here... or even if this is the best way to do it.
View 2 Replies
May 1, 2011
Im trying to pass a value of a date control from form1 to form2.on form 1.aspx.vb:
Public ReadOnly Property Property1() As Date
Get
Return StartDate.SelectedDate[code].....
Tried to assign the property to a string, it did not work either.
View 2 Replies