Get A Property To Access Its Own Name And Type At Runtime Using Reflection?
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)
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?
start with I was given a program by a friend that was created in Excel 2003 with the help of Visual Basic Editor. He said he used Visual Basic 2003, which he is not 100% sure about. Anyways he used CurLine in the program and when I try to open it in Excel 2007 and then open the Visual Basic Editor and run the program I get the following error:Run-time error '-2147418113 (8000ffff)':Could not get the CurLine property. Unexpected call to method or property access.
I thought I saw how to do this but can't seem to find it now.Is there a way to set the properties of all controls on a Form by Control Type?Meaning, if I have 5 textboxes on a form can I write code like .If page.contol is TextBox then
textbox.forecolor = Blue
Then when the page loads is sets all the textboxes forecolor on the form to Blue.
I was trying to access the following property using Reflection because I don't have the original source code (suppose this was decompiled through Reflector). It seems that something is special about it being "private virtual" or maybe because it has "_" in the beginning of the property. I can access all the other private properties no problem except this one. Just can't figure out what I am doing wrong:
I was trying to access the following property using Reflection because I don't have the original source code (suppose this was decompiled through Reflector). It seems that something is special about it being "private virtual" or maybe because it has "_" in the beginning of the property. I can access all the other private properties no problem except this one.
I searched on the forum / Internet for the solution how a PropetryInfo object (of a Public property) can reveal if it has a Private Protected Setter ... it was all in vain .... all help I found was about how to "Set" value of a public property having a Private Setter.I would like to know if I have a PropertyInfo object of a public property, how would I know if its Setter is Non Public?
I tried, in a exception handling block, where I did a GetValue of the PropertyInfo object and then called SetValue by setting the same value back... but to my surprise it worked well and didn error out.
How to get property.value from reflection.assembly?
Dim assembly As Assembly = assembly.GetExecutingAssembly() For Each assemblyType As Type In assembly.GetTypes() If assemblyType.IsSubclassOf(GetType(Form)) Then
Is it possible to get a string form a table and executed at runtime using reflection?(.Amount > 1000) and ((.Total * 80%) >.Amount)� Amount and Total are Decimal properties of an existing class
I know its unlikely but I was wondering if there is any way to get the comments (i.e. the bits after the ''') of a class or property..? I have managed to get a list of properties of a class using the PropertyInfo class but I cant find a way to get the comments / description.. I need it for a guide I am writing for the administrators of my site - it would be great if it could automatically update if new properties are added, so there is no need to worry about updating it in the future too much.
I am retrieving several properties of a control. Here is how I used to retrieve properties (with pinfo of type PropertyInfo):
value = pinfo.GetValue(obj, nothing)
That worked well, but now I am facing a property that has a optional value, and I get an error message telling me that the number of parameters is incorrect. So I changed my code by this one:
Dim index As Object() = {Nothing} value = pinfo.GetValue(obj, index)
At this point, I didn't get any error message, but this code doesn't retrieve the good value. It only works if I replace Nothing by the default value provided by the property accessor...
But I don't know in advance what this default value is! And this code is within a function that retrieves properties that doesn't have optional values, so I cannot change the code especially for one case or another..
I am working on .NET 2.0
EDIT: More precisions about the case leading to the problem
Here is an example of property leading to the problem:
ReadOnly Property Foo(Optional ByVal Number As Integer = -1) As String Get If Number = -1 Then
[Code]....
With this kind of property, none of the codes above retrieve the good string.
My best guess would be to try the first code for general purposes, catch the appropriate exception, and then dynamically retrieve the default value of the parameter (Number in that case) and its type, so that I can call getValue with this default value.
So, How can I retrieve the default value of the optional parameter?
How to get the object description using reflection. I can get the name, value, etc... but not the decription like in .net.For example the description for .Text is "Gets or sets the text associated with this control." I thought maybe using MethodInfo, but does not give the description.
Dim MethodObj As MethodInfo Console.WriteLine("Methods:") For Each MethodObj In GetType(TextBox).GetMethods() Debug.Print(MethodObj.Name & " " & MethodObj.ReturnType.ToString()) Next
When I got a fieldsinfo-array of a class I know all of it's fields. Now, how can I access all of the fields of an instance of the same class by using the fieldsinfo-array? [code]I'm sure there exists a possiblity to get the value of the instance, but how?
This function loops all properties of an object to create the updatequery to save te object to the DB.
We had to make some changes to it because of the introduction of nullable properties. If the property is nullable we would like to check the 'HasValue' property. This does works when it has a value. When the property has no value we get an 'Non-static method requires a target'-error at the CBool-line
An other way to check the 'HasValue'-prop of a property using reflection?
Private Function GetUpdateQuery(ByVal obj As Object, ByRef params As List(Of SqlParameter), Optional ByVal excl As String() = Nothing) As String Dim sql As String = String.Empty
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.
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]
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:
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
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.
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?
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.
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.
I have inherited a large project written in a mixture of C# and VB.Net
The project involves many separate assemblies.
There are hundreds (or thousands) of resources (png files) that have been inserted into the project using the VB My.Resources functionality that I would like to access from some C# code, in a different assembly.
Microsoft has a KB article about this. It includes some sample code, but I can't get it to work (and I can't quite follow the code).
// Gets a reference to the same assembly that // contains the type that is creating the ResourceManager. System.Reflection.Assembly myAssembly;