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

「コンストラクターがありません」というエラーが表示される理由は、このコンストラクターが静的であるためです。静的コンストラクターを直接呼び出すことはできませんが、フレームワークは、このクラスの最初のメソッドまたはプロパティにアクセスする直前にそれらを呼び出します。

静的コンストラクターは、アクセス修飾子 (public、private など) を持つことも、パラメーターを持つこともできません。

于 2012-08-28T12:44:07.173 に答える