Создание экземпляра для исключения броска типа во время выполнения - PullRequest
0 голосов
/ 23 июня 2019

Мой код вызывает исключение, и я не знаю почему. Может, кто-нибудь сможет мне помочь.

Исключение:

System.MissingMethodException: конструктор по типу 'System.Reflection.RuntimePropertyInfo' не найден. '

Мой код:

class Program
{
    static void Main(string[] args)
    {
        Test t1 = new Test();
        Test1 t = new Test1();
        typeof(Test1).GetProperty("Name").SetValue(t, "tetst");

        // throws error:
        var c = Activator.CreateInstance(typeof(Test).GetProperty("Test1test").GetType());

        typeof(Test).GetProperty("Test1test").SetValue(c, t);

        Console.Read();
    }
}

public class Test
{
    public Test()
    {
        Test1test = new Test1();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public Test1 Test1test { get; set; }
}

public class Test1
{
    public Test1()
    { }

    public int Id { get; set; }
    public string Name { get; set; }
}

1 Ответ

0 голосов
/ 23 июня 2019

Вам нужно изменить с

var c = Activator.CreateInstance(typeof(Test).GetProperty("Test1test").GetType());

изменить на

var c = Activator.CreateInstance(typeof(Test));

typeof(Test).GetProperty("Test1test").GetType() вернет тип Test1

но вы хотите установить свойство Test1test, поэтому вам нужно создать экземпляр Test

typeof(Test).GetProperty("Test1test").GetType() возврат RuntimePropertyInfo тип, а не Test1 тип.

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