【问题标题】:Creating Instance for run time type throwing exception为运行时类型抛出异常创建实例
【发布时间】:2019-06-23 11:06:33
【问题描述】:

我的代码抛出异常,我不知道为什么。也许有人可以帮助我。

例外:

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; }
}

【问题讨论】:

  • 你为什么不用Activator.CreateInstance(typeof(Test1))

标签: c# .net reflection


【解决方案1】:

你需要改变

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 类型。

【讨论】:

  • 我测试了代码,它成功了,他想设置 Test1test 所以他需要创建 Test 实例
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多