C# 非静态字段、方法或属性需要对象引用';GetType()';
我遇到了这样的错误: 非静态字段、方法或属性“object.GetType()”需要对象引用 类别:C# 非静态字段、方法或属性需要对象引用';GetType()';,c#,C#,我遇到了这样的错误: 非静态字段、方法或属性“object.GetType()”需要对象引用 类别: public class Roll { public int Code = 0; public string Name = ""; public DateTime Date = DateTime.MinValue; } 如果你需要更多的信息,请告诉我 谢谢这意味着为了调用(即调用)Roll上的GetType()方法,您需要一个类型为Roll类的对象实例,因为GetT
public class Roll
{
public int Code = 0;
public string Name = "";
public DateTime Date = DateTime.MinValue;
}
如果你需要更多的信息,请告诉我
谢谢这意味着为了调用(即调用)
Roll
上的GetType()
方法,您需要一个类型为Roll
类的对象实例,因为GetType()
方法不是静态方法
因此,正如其他人所说,使用typeof
,如下所示
XmlSerializer rd = new XmlSerializer(typeof(Roll));
您正在尝试将Roll
实例序列化为文件或其他内容吗
? 如果是,请尝试下面的示例
例:
您希望将
Roll
类的Type
对象传递给XmlSerializer
构造函数,但您使用的是GetType()
函数,它是一个实例方法,而不是静态方法。实例方法需要从对象调用,而静态方法可以从类本身调用
要执行您想要的操作,在没有Roll
类型的对象的情况下,使用
XmlSerializer rd = new XmlSerializer(typeof(Roll));
typeof
操作符返回一个Type
对象,该对象描述作为其参数传递的类。实际上,这意味着您应该使用typeof(Roll)
而不是Roll.GetType()
。即
XmlSerializer rd = new XmlSerializer(typeof(Roll));
从技术上讲,这意味着
Roll
是一个类,GetType()
是该类的有效实例方法(通过继承),但它不是有效的静态方法。因此,如果myRoll
是Roll
类型的对象实例,您可以调用myRoll.GetType()
,但是您不能调用Roll.GetType()我们没有必要的代码来重现此错误。@Seb告诉我您需要什么,我想要运行的按钮上的代码?这与我需要的无关。你才是需要帮助的人。您需要创建一个演示您的问题的标题。请删除您的问题,使标题更能描述实际问题。这里怎么了?没有任何有意义的信息。问题标题实际上应该描述你正在经历的问题,或者你正在问的问题,这对在搜索结果中找到问题的未来读者很有用。您还没有为单行代码提供上下文。如果你需要我们的帮助。具体说明问题,包括相关信息,并提出具体问题。公共领域反对最佳实践,您应该使用属性。@Shiva我应该把它放在我创建的类中,在我定义输入类型的地方,还是放在定义每个按钮功能的代码中?@Phyti请更新您的问题,添加定义滚动
类的代码。确保删除敏感信息(例如:密码或其他专有信息)。@Seb这不是猜测。这就是答案。@miliesmith如果Roll
不是可以实例化的类型,例如接口或抽象类,该怎么办?那么,这就是答案吗?我的问题是,这个答案依赖于尚未提供的不完整信息。其他答案仍然依赖猜测,但至少更全面,可能涵盖所有可能性。@Seb我最初的答案是完整的,因为OP问错误是什么意思,我向他解释了。在我要求OP用Roll
class definition更新他的问题后,他这样做了,现在这个更新的答案也完成了。深呼吸,兄弟。
XmlSerializer rd = new XmlSerializer(typeof(Roll));
XmlSerializer rd = new XmlSerializer(typeof(Roll));