[解決済み] C#で、クラスや関数の前に角括弧で書かれているものは何でしょうか?重複] [重複] [重複] [重複
質問
私はCとC++に精通しています。C#を使うのは初めてです。私はWCFとWPFについて学習しようとしています。私はCodeProjectのチュートリアルを使用しています。そこでは、作者がサンプルコードを与えています。そこで彼は、角括弧内のインターフェイスとメソッドの前に何かを書いています。それは何ですか?コメントなのでしょうか? 以下は、そのサンプルコードです。
[ServiceContract(SessionMode = SessionMode.Required,
CallbackContract = typeof(IChatCallback))]
interface IChat
{
[OperationContract(IsOneWay = true, IsInitiating = false,
IsTerminating = false)]
void Say(string msg);
[OperationContract(IsOneWay = true, IsInitiating = false,
IsTerminating = false)]
void Whisper(string to, string msg);
[OperationContract(IsOneWay = false, IsInitiating = true,
IsTerminating = false)]
Person[] Join(Person name);
[OperationContract(IsOneWay = true, IsInitiating = false,
IsTerminating = true)]
void Leave();
}
解決方法は?
これらは属性です。
以下の通りです。
属性
は宣言タグで、プログラム中のクラス、メソッド、構造体、列挙体、アセンブリなどの様々な要素の動作に関する情報を実行時に伝えるために使用されます。属性を使って、プログラムに宣言的な情報を追加することができます。宣言的なタグは、使用する要素の上に角括弧([ ])で囲んで表現します。
例えば、属性は以下のように使用することができます。
クラスがシリアライズ可能かどうか
または
データベースのどのフィールドに、特定のプロパティを書き込むか。
などなど...。
例えば、こんな属性を見てみましょう。
[OperationContract(IsOneWay = true, IsInitiating = false, IsTerminating = false)]
この属性は
OperationContract
. そして
IsOneWay
,
IsInitiating
,
IsTerminating
は、この属性のプロパティです。
オペレーションコントラクト - あるメソッドが、以下の操作を定義していることを示す。 Windows Communication Foundation のサービス・コントラクトの一部です。 (WCF)アプリケーションで使用されます。
IsOneWay - を示す値を取得または設定する。 操作によって返信メッセージが返されるかどうか。
IsInitiating - 取得または メソッドが操作を実装しているかどうかを示す値を設定します。 サーバー上でセッションを開始することができます (そのようなセッションが存在する場合)。
IsTerminating - を示す値を取得または設定します。 サービス操作の後、サーバーはセッションを終了させます。 応答メッセージがある場合は、それを送信する。
定義済みの属性を使用するか、独自のカスタム属性を作成することができます。
すべての定義済み属性とその説明を見ることができます。
こちら
.
を読むことができます。
これ
msdnによるAttributeについてのチュートリアル。
関連
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み】.NETの属性とは何ですか?