• Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
  • Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!

You are not logged in or you do not have permission to access this page. This could be due to one of several reasons:

  • You are not logged in. If you are already registered, fill in the form below to log in, or follow the "Sign Up" link to register a new account.
  • You may not have sufficient privileges to access this page. Are you trying to edit someone else's post, access administrative features or some other privileged system?
  • If you are trying to post, the administrator may have disabled your account, or it may be awaiting activation.

Previously on "Discovering a .net objects properties"

Collapse

  • ASB
    replied
    Cheers.

    Leave a comment:


  • mcquiggd
    replied
    Heres a version in VB.Net to set the value of a Property that is a string Array
    and accepts an Index as a paramater:


    Imports System.Reflection

    Public Class TargetClass

    Private _theArray(10) As String

    Public Property MyProp(ByVal theIndex As Integer)
    Get
    Return (_theArray(theIndex))
    End Get
    Set(ByVal Value)
    _theArray(theIndex) = Value
    End Set
    End Property

    End Class


    Public Class PropertyUpdater

    Public Sub SetProperties(ByRef targetObject As Object, ByVal index() As Object, ByVal newValue As String)

    Dim targetType As Type = targetObject.GetType
    Dim props() As PropertyInfo
    Dim prop As PropertyInfo

    props = targetType.GetProperties

    For Each prop In props

    prop.SetValue(targetObject, newValue, index)

    Next

    End Sub

    End Class

    This would be called by:

    Private targetObject As New TargetClass
    Private updater As New PropertyUpdater
    Private the index as Integer

    theIndex = Integer.Parse(TextBoxIndex.Text)

    updater.SetProperties(targetObject, New Object() {theIndex}, TextBoxNewValue.Text)

    TextBoxCurrentValue.Text = targetObject.MyProp(theIndex)




    Obviously you wouldnt really loop through all the PropertyInfos, you would just use GetProperty instead of GetProperties but you get the picture...

    Leave a comment:


  • ASB
    replied
    Cheers, that should get me on the right track.

    Leave a comment:


  • mcquiggd
    replied
    I presume you mean something declared like this:

    Public Property TheProperty(ByVal theIndex as Integer, ByVal theValue As String) As String


    I take it you are using VB.Net as C# doesnt seem to accept paramaterised properties per se; its possible with an indexer as a workaround, but you can only have one indexer per class in C#.

    Look at ParameterInfo, and PropertyInfo.GetIndexProperties. The ParameterInfo has a Position property and this might help you build the correct array of Objects to pass in the third paramater of the SetValue mthod.
    Last edited by mcquiggd; 26 March 2006, 10:58.

    Leave a comment:


  • ASB
    started a topic Discovering a .net objects properties

    Discovering a .net objects properties

    Any pointer as to the easiest way to obtain a list of proptery names and values that are implemented in a .NET object. Basically all I want to is poulate a grid with the names and properties. Obviously I can write specific code for it but I have a load of different object so wanted to do something generic.

    Object.GetType.GetProperties gets me an array of PropertyInfo.

    PropertyInfo.Name gets me the name, .CanRead whther or not I can read it and .GetValue the value. What confuses me is how I deal with properties that have parameters. Can't seem to find anything too obvious on MSDN, but then I can only even find info I already know the answer to there.
Working...
X