我有一个这样的课程:
public static class Extras
{
static Extras()
{
}
public static string SerializeObject<T>(this T toSerialize)
{
XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());
StringWriter textWriter = new StringWriter();
xmlSerializer.Serialize(textWriter, toSerialize);
return textWriter.ToString();
}
}
它用于序列化一个对象,它位于自己的类库中。
当我在主MVC项目中引用该类时,我从编译器获得以下消息:
Type'ReablementExtras.Extras' has no constructors.
请有人能告诉我一点小小的想法吗?
感谢。
答案 0 :(得分:2)
无法实例化静态类。您只能通过类名称调用方法或属性:
var s = Extras.SerializeObject<int>(3); // OK
Extras e = new Extras(); // not OK
e.SerializeObject<int>(3); // not OK
这种写作称为Extension Method
。您也可以将该方法称为任何类型的类成员:
MyClass c = new MyClass();
var s = c.SerializeObject();
如果您没有在intellisense列表中看到SerializeObject
,则需要添加using
语句,这是您的情况:
using ReablementExtras;
您看到“无构造函数”错误的原因是因为此构造函数是静态的。静态构造函数不能直接调用,但框架在您访问此类的第一个方法或属性之前调用它们。
静态构造函数也不能有访问修饰符(公共,私有等...),也不能有任何参数。