Как получить значение свойства с отражением в C# - PullRequest
1 голос
/ 02 августа 2020

У меня есть такая переменная даты и времени:

DateTime myDate=DateTime.Now; // result is like this: 8/2/2020 12:54:07 PM

, и я хочу получить myDate такую ​​переменную

DateTime getOnlyDate=myDate.Date; 

, и я хочу получить myDate.Date; с отражением как я могу получить значение свойства Date с отражением? с отражением я делаю что-то вроде этого:

PropertyInfo myDate = typeof(DateTime).GetProperty("Date");

но я не знаю, как я могу запросить значение myDate.Date; с отражением. заранее спасибо

1 Ответ

3 голосов
/ 02 августа 2020

После того, как вы получили PropertyInfo, вы получаете значение с помощью PropertyInfo.GetValue, передавая «то, от чего вы хотите получить свойство» (или null для stati c свойство).

Вот пример:

using System;
using System.Reflection;

class Program
{
    static void Main()
    {
        DateTime utcNow = DateTime.UtcNow;
        
        PropertyInfo dateProperty = typeof(DateTime).GetProperty("Date");
        PropertyInfo utcNowProperty = typeof(DateTime).GetProperty("UtcNow");
        
        // For instance properties, pass in the instance you want to
        // fetch the value from. (In this case, the DateTime will be boxed.)
        DateTime date = (DateTime) dateProperty.GetValue(utcNow);
        Console.WriteLine($"Date: {date}");
        
        // For static properties, pass in null - there's no instance
        // involved.
        DateTime utcNowFromReflection = (DateTime) utcNowProperty.GetValue(null);
        Console.WriteLine($"Now: {utcNowFromReflection}");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...