gpt4 book ai didi

c# - 无法在静态类上调用 GetType()

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:01 25 4
gpt4 key购买 nike

我在 NewStarterTool 命名空间中有以下 Globals 类:

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";
}
}

在同一个命名空间中,我有一个 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())
{

}
}
}
}

但是,在 foreach (var property in Globals.FieldNames.GetType().GetProperties()) 行上,我看到了这个错误:

An object reference is required for the non-static field, method, or property 'object.GetType()'

尽管我可以看到 GlobalsFieldNames 都是静态的,因此不应该导致此错误。


我可以确认这没有任何问题:

var dept = Globals.FieldNames.Department;

我尝试将 FieldNames 更改为:

public static class FieldNames

我还尝试将方法签名更改为:

private static void Initialise()

但两者的结果相同。


为什么会这样?

如何遍历 FieldNames 的属性?

最佳答案

首先,你的类是静态的,GetTypes() 是一个实例成员。

如前所述,您可以使用 typeof(Globals.FieldNames).GetProperties()

除了那也行不通,因为您没有属性。您感兴趣的值是所有字段。

所以你需要 typeof(Globals.FieldNames).GetFields()

然后您可以使用 (string) field.GetValue(null) 从每个 FieldInfo 中获取值。

关于c# - 无法在静态类上调用 GetType(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39914168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com