- - PR -
[C# VS2005] CA1060警告の修正方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-25 12:54
構文解析結果(CA1060)の修正方法を教えてください。
エラーのヘルプ表示も見ましたが、内容が理解できず 修正方法が分かりませんでした。 // ソースコード using System.Runtime.InteropServices; namespace DesignLibrary { public abstract class UnmanagedApi { /// <summary> /// ビープ音を指定msec間鳴らす /// </summary> /// <param name="freq 音の高さ(周波数 Hz)"></param> /// <param name="duration 長さ(msec)"></param> /// <returns></returns> [DllImport("kernel32.dll")] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool Beep(int freq, int duration); } } // 警告内容 // 警告 CA1060 : Microsoft.Design : UnmanagedApi.Beep(Int32, Int32):Boolean は DllImport メソッドであるため、NativeMethod、SafeNativeMethod または UnsafeNativeMethod に名前指定されたクラスで定義しなければなりません。 C:\Documents and Settings\daicel\My Documents\作業中\反転切り出し 1.0\WindowsApplication1\DaicelCorp-Sound.cs 14 Compile | ||||
|
投稿日時: 2006-08-25 13:01
ヘルプの意味があまりよくわかっていませんが、
こんな感じ? internal static クラスでもいけるのかな? _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-08-25 13:17
そのままで何ら問題ないように思いますけど...
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-08-25 16:12
ひろしさん、こんにちは。
これ、デザイン ガイドラインに準拠していない場合に、コード分析ツールが出す警告ですよね? 単に、このメソッドを定義するクラスの名前を、「NativeMethod、SafeNativeMethod または UnsafeNativeMethod」の何れかにしなさい、という事ではありませんか? #当方の環境は for Software Architects なので、検証出来ません…。 【追記】 コードアクセスセキュリティの実践という文書の、名付け規則を使用してリスクを示すという項に、それらしい説明を見つけました。 [ メッセージ編集済み 編集者: きくちゃん 編集日時 2006-08-25 16:44 ] | ||||
|
投稿日時: 2006-08-25 20:05
>きくちゃん
ビンゴです。その通りにしたら見事コード分析成功でした。 名前付けを分析するとは…。 SafeNativeMethods クラスの場合は、シールクラスにしなければならない等も分析してくれるようです。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-08-28 12:34
ご回答ありがとうございます。
クラス名をNativeMethodsに修正することで警告を抑制できました。 using System.Runtime.InteropServices; namespace DaicelCorp.Sound { // 修正箇所 public abstract class NativeMethods { /// <summary> /// ビープ音を指定msec間鳴らす /// </summary> /// <param name="freq 音の高さ(周波数 Hz)"></param> /// <param name="duration 長さ(msec)"></param> /// <returns></returns> [DllImport("kernel32.dll")] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool Beep(int freq, int duration); } } |
1