【发布时间】:2019-09-21 07:53:41
【问题描述】:
我正在尝试通过System.Type.GetProperty("Finish") 在 MS 项目中访问 Task 的属性,但它看起来无法通过反射访问该属性(以及其他类似的属性,例如 Number1),除非我的代码特别使用该属性。这是我可以更改的编译器设置吗?我正在编写一个同步引擎,因此无法提前知道客户端系统可能会请求 Task 的哪个字段。
所以对于下面的示例,信息将为空。
System.Type ty = typeof(Task);
System.Reflection.PropertyInfo info = ty.GetProperty("Finish");
但使用下面的代码,信息作为有效的 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
【问题讨论】:
-
这是什么任务类型?它不是 System.Threading.Tasks.Task 或 Microsoft.Build.Utilities.Task,因为它们都没有 Finish 属性。我怀疑在这两种情况下,您正在访问不同名称空间中具有相同简单名称的不同类型。
-
这是任务:using Task = Microsoft.Office.Interop.MSProject.Task;
标签: c# reflection task ms-project