我正在尝试通过Task
访问MS Project中System.Type.GetProperty("Finish")
的属性,但是看起来该属性(以及其他类似的属性,例如Number1
)不可访问通过反射,除非我的代码专门使用该属性。这是我可以更改的编译器设置吗?我正在编写一个同步引擎,因此无法提前告知客户端系统可能请求Task
的哪个字段。
因此,在下面的示例中,info将为空。
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()
能为Task
的API中列出的所有属性工作(相当多)。
以下是Finish
属性的API链接:https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.msproject.task.finish?view=office-project-server
答案 0 :(得分:0)
您需要通过内部字段ID来标识该字段-使用固有常数(例如pjTaskFinish)或其数值(188743716)。
或者,您可以使用Application对象的FieldNameToFieldConstant方法将友好字段名称转换为常量。
p.s。文档的VBA版本包含更多信息;大多数(如果不是全部)对象/方法/属性都相同。