我们无法从财产中获得价值

这是我的代码

public abstract class LayoutMetadata
{
    public abstract Guid StaticId { get; }
}

Public MonthlyRor:LayoutMetadata
{
        //Here we assigned static value to StaticId
     public override Guid StaticId => new Guid("1188644E-C754-4121-9625-1EDD361455D3");
}

var type = typeof(LayoutMetadata).Assembly.SafeGetTypes().Where(t => !t.IsAbstract && t != typeof(LayoutMetadata)).ToList();
var test=first.GetProperty("StaticId").Getvalue(first,null);

我尝试了

var test=first.GetProperty("StaticId").Getvalue(first,null);

但是抛出

  

“对象与目标类型不匹配”例外

请对此提出任何解决方案。

xuhard007 回答:我们无法从财产中获得价值

首先,您似乎误解了类型和想要从中检索信息的对象的实例。

您代码中的

type应该是您要检查的对象的 type ,而first应该是您想要的类型type的实例检查。如果是这样,那么您的代码应如下所示:

var test = type.GetProperty("StaticId").GetValue(first,null);

请注意,需要从类型对象(GetProperty)中调用type,并将要检查的对象的实例作为参数传递给方法GetValue。一个简单的例子,很清楚:

var p = new Person();
var t = p.GetType();
var name = t.GetProperty("Name").GetValue(p,null);
本文链接:https://www.f2er.com/3124865.html

大家都在问