为运行时间类型投掷异常创建实例



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

例外:

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

您需要从

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

更改为

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

typeof(Test).GetProperty("Test1test").GetType()将返回test1 type

但是您要设置属性Test1test,因此您需要创建Test

的实例

typeof(Test).GetProperty("Test1test").GetType()返回 RuntimePropertyInfo类型,而不是 Test1类型。

最新更新