Easy Reflection вопрос C # - PullRequest
       11

Easy Reflection вопрос C #

1 голос
/ 05 июня 2009

Я хочу указать неизвестный «объект» и вернуть значение одного из его членов. Ответ требуется в C #.

Обычно я думаю, что я ищу код для этого метода открытый статический объект GetObjectMemberValue (объект myObject, строка memberName)

Более конкретно, я делаю это для строк ресурсов в Silverlight, и мне нужно написать этот метод. Он находится в общем проекте и используется против нескольких разных словарей Resx, поэтому у меня нет доступа к информации о типах. открытая статическая строка GetString (объект StringResources, строка ResourceId)

Спасибо!

Ответы [ 5 ]

5 голосов
/ 05 июня 2009

Это даст вам ценность ... Можете ли вы дать мне больше информации в разделе resx вопроса?

public static object GetObjectMemberValue(object myObject, string memberName)
{
  PropertyInfo dateProperty = myObject.GetType().GetProperty(memberName);
  return dateProperty.GetValue(myObject, null);
}
1 голос
/ 05 июня 2009
static class ObjectExtensions {
    public static object GetObjectPropertyValue(this object o, string propertyName) {
        return o.GetType().GetProperty(propertyName).GetValue(o, null);
    }
}

class Test {
    public string Message {get; set;}
}

class Program {
    static void Main(string[] args) {
        object t = new Test { Message = "Hello, World!" };
        Console.WriteLine(t.GetObjectPropertyValue("Message").ToString());
    }
}
1 голос
/ 05 июня 2009

если вы знаете тип объекта, то приведете к нему?

Или он должен по крайней мере реализовать интерфейс, если вы не знаете явный тип?

MyType value = (MyType)objectGetter() //this is the function that returns the unknown.
value.GetMember()
0 голосов
/ 05 июня 2009
o.GetType().InvokeMember( "MemberName", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty, null, o, null );
0 голосов
/ 05 июня 2009

Сначала получите тип объекта:

Тип myObjectType = myObject.GetType ();

Затем вы можете использовать возвращенный объект Type , чтобы получить информацию о свойстве, а затем его значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...