繁体   English   中英

只有在我的代码中显式访问属性时,才能通过反射访问任务属性

[英]Accessing Task properties via reflection only works if the properties are explicitly accessed in my code

我试图通过System.Type.GetProperty("Finish")访问MS Project中的Task属性,但看起来像属性(和其他类似的东西,例如Number1 )无法通过反射访问,除非我的代码专门使用该属性。 这是我可以更改的编译器设置吗? 我正在编写一个同步引擎,因此无法提前告知客户端系统可能请求的Task的哪个字段。

因此,通过下面的示例,info将为null。

System.Type ty = typeof(Task);
System.Reflection.PropertyInfo info = ty.GetProperty("Finish");

但是使用下面的代码,info将作为有效的PropertyInfo对象返回。

Task tk = activeProject.ProjectSummaryTask;
object done = tk.Finish;
System.Type ty = typeof(Task);
System.Reflection.PropertyInfo info = ty.GetProperty("Finish");

我基本上期望GetProperty()适用于API for Task列出的所有属性(这些属性很多)。

以下是Finish属性的API链接: https//docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.msproject.task.finish?view = office-project -server

使用Task对象的GetField方法返回变量字段的值。

您需要通过内部字段ID识别字段 - 使用内部常量(例如pjTaskFinish)或其数值(188743716)。

或者,您可以使用Application对象的FieldNameToFieldConstant方法将友好字段名称转换为常量。

ps VBA版本的文档包含更多信息; 大多数(如果不是全部)对象/方法/属性是相同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM