0

Winforms アプリケーションで使用されているクラス ライブラリを C# で作成しようとしました。

私のアプリケーションでは、テキストボックスからの入力があり、ボタンをクリックすることで、(テキストボックスから) 1 つのパラメーターでイベントをインスタンス化しています。この 1 つのパラメーターを使用してコンストラクターを作成しようとしましたが、役に立ちませんでした。クラスを既存のプロジェクトに追加するだけでこれを行うことができますが、クラス ライブラリを参照するときはできません。

可能であれば、クラス ライブラリ内で 1 つのパラメーター コンストラクターを使用する方法を見つけたかっただけです。助けてください。(これは、クラス ライブラリを参照するときに、実際には元のアセンブリの外側に移動するため、論理的に機能しない可能性がありますが、おそらく....)

4

3 に答える 3

3

新しいクラス ライブラリが別の C# プロジェクトにある場合は、クラスを使用する前に、WinForms アプリからそのプロジェクトへの参照を設定する必要があります。

もちろん、元の投稿の行間を読もうとしています。クラスが別のプロジェクトで定義されているときだけではなく、それを機能させる方法を知っているようです。私が誤解している場合は、さらに情報を提供してください。

于 2010-07-06T18:39:33.683 に答える
1

自分自身に賛成票を投じたりコメントしたりするのに十分なサイト経験はまだありませんが、DRapp の回答は私の問題を解決しました。元の質問は少し漠然としているので、私が見ているものをもう少し詳しく説明したいと思いました:

C# で作成されたクラス ライブラリを参照するメトロ アプリケーションを C++ で作成しています。C# モジュールからエクスポートされたオブジェクトの作成は、コンストラクターにパラメーターがない限り、正常に機能していました。

// C# file exported to .winmd class library for use in metro app
namespace A
{
    public sealed class B
    {
        public B(bool bTest)
        {}

        // Other methods/members...
    }
}

// C++ metro app referencing .winmd created from C# above
...

A::B^ spB = ref new A::B(bTest);  // Throws an exception

C++ で C# モジュールからタイプ B のオブジェクトを作成しようとすると、例外がスローされ、出力ログにやや不可解な「WinRT 変換エラー」が表示されます。

これを修正するために、DRapp が提案したことを実行して、デフォルトのコンストラクターを B に追加することができました。

// C# file exported to .winmd class library for use in metro app
namespace A
{
    public sealed class B
    {
        public B()
        {}
        public B(bool bTest)
        {}

        // Other methods/members...
    }
}

もう例外ではありません。:)

于 2012-03-04T21:42:32.910 に答える
0

次のようなクラスには2つのコンストラクターがないようです...(オーバーロード)

public class YourClass
{
   public YourClass()
   {
   }


   public YourClass(String OneParameter)  // this OVERLOADS the default No parameter one
   {
      DoWhatever with your OneParameter...
   }
}
于 2010-07-06T18:45:51.377 に答える