c# - 我们无法从财产中获得价值
问题描述
这是我的代码
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);
但抛出
“对象与目标类型不匹配”异常
请就此提出任何解决方案。
解决方案
首先,您似乎误解了要从中检索信息的该类型对象的类型和实例。
type
在您的代码中应该是您要检查的对象的类型first
,并且应该是您要检查的类型的实例type
。如果是这种情况,那么您的代码应如下所示:
var test = type.GetProperty("StaticId").GetValue(first, null);
请注意,GetProperty
需要从类型 object ( type
) 调用,并且您要检查的对象的实例作为参数传递给方法GetValue
。一个简单的例子可以清楚地说明:
var p = new Person();
var t = p.GetType();
var name = t.GetProperty("Name").GetValue(p, null);
推荐阅读
- ios - 客户未收到推送通知
- java - Android Java İimageview 与进度
- javascript - 为什么我登录时我的登录页面加载缓慢
- azure - 添加 Azure Kinect 时的身体跟踪
- go - TCP 服务器无法识别已关闭的物联网设备
- angular - 使用 ngModel 和 ngValue Angular 4 和 JHipster 时获取未定义的值
- wpf - WPF 绑定未引发数据模板类型扩展器的属性更改事件
- c - 为什么我会收到陷阱 14 消息,其中动态数组保存在堆栈中
- java - 如何使用 Ajax 将 system.out.println("xyz") 语句从逻辑方法打印到 GUI
- html - 透明图像以查看彩色背景