-1

我有这样的课:

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.

请有人能告诉我小小的心灵为什么吗?

谢谢。

4

1 回答 1

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();

如果您SerializeObject在智能感知列表中看不到 ,则需要添加一条using语句,在您的情况下:

using ReablementExtras;

您看到“无构造函数”错误的原因是此构造函数是静态的。不能直接调用静态构造函数,但框架会在您访问此类的第一个方法或属性之前调用它们。

静态构造函数也不能有访问修饰符(公共、私有等),也不能有任何参数。

于 2012-08-28T12:44:07.173 回答