Bas*_*sie 2 c# oop static compiler-errors
Globals我在命名空间中有以下类NewStarterTool:
static class Globals
{
static internal class FieldNames
{
public const string FirstName = "FirstName";
public const string MiddleInitial = "_3f304008_6d27_46e4_82e1_81d2ea5d5d84";
public const string LastName = "__x007b_39b5c34f_247a_466c_8a76_480f54461087_x007d_";
public const string Role = "__x007b_c0bc5325_2cdb_4b7d_8687_eba9cf958f01_x007d_";
public const string Department = "Department";
public const string JobTitle = "JobTitle";
public const string Office = "_38bb16d7_d38b_4409_aa54_25bd0cb921af";
public const string ReportingTo = "_398dc3c8_ff1d_4013_a6e0_139809b37b0d";
public const string SecretaryTo = "_cefdf77c_5767_4539_aa5b_098aa3ff0b60";
public const string StartDate = "StartDate";
public const string FullTime = "_96d926ba_0a82_4773_964a_43d884e5d6d4";
}
}
Run Code Online (Sandbox Code Playgroud)
在同一个命名空间中,我有一个WPF表单,我希望该方法能够迭代从以下位置检索的每个项目的Initialise()所有属性:FieldNamesSharePoint
public partial class MainWindow : Window
{
public MainWindow()
{
Initialise();
InitializeComponent();
}
private void Initialise()
{
var siteUrl = "http://MySharePointSite/SubSiteName/";
var listName = "TestList";
var camlQuery = "<View Scope='RecursiveAll'></View>";
var listItemCollection = SharePoint.GetListItems(siteUrl, listName, camlQuery);
foreach (var item in listItemCollection)
{
foreach (var property in Globals.FieldNames.GetType().GetProperties())
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,在线上foreach (var property in Globals.FieldNames.GetType().GetProperties()),我看到这个错误:
非静态字段、方法或属性“object.GetType()”需要对象引用
尽管我可以看到 和Globals都是FieldNames静态的,因此不应该导致此错误。
我可以确认这可以正常工作,没有任何问题:
var dept = Globals.FieldNames.Department;
Run Code Online (Sandbox Code Playgroud)
我尝试更改FieldNames为:
public static class FieldNames
Run Code Online (Sandbox Code Playgroud)
我还尝试将方法签名更改为:
private static void Initialise()
Run Code Online (Sandbox Code Playgroud)
但两者的结果相同。
为什么会发生这种情况?
我如何迭代 的属性FieldNames?
首先,您的类是静态的,并且 GetTypes() 是实例成员。
正如已经指出的,您可以使用typeof(Globals.FieldNames).GetProperties().
但这也行不通,因为你没有财产。您感兴趣的价值观是所有领域。
所以你需要typeof(Globals.FieldNames).GetFields().
然后您可以从每个 FieldInfo 获取值(string) field.GetValue(null)。
| 归档时间: |
|
| 查看次数: |
1164 次 |
| 最近记录: |