過去ログ:     キーワード: 条件: 表示:

[2102] C#での列挙型

投稿日 18/06/19-09:20
投稿者
参照先 https://riku22.net/

 こんにちは、お世話になります。

 ドットネット型で列挙型というのを扱いたいのですが、どのように書けばよいのか、いまいちよくわかりません。
 実際にやりたいのは、

https://dobon.net/vb/dotnet/file/getfolderpath.html

のサイトのものなのですが。

 とりあえず、試しに書いたソースを張ってみます。

----------
GetFolderPath型というドットネット型(「System.Environment.GetFolderPath」)を作る
GetFolderPath型から「System.Environment.SpecialFolder.System」を{}で呼び出す
それを表示する
----------

 何かアドバイスをいただけると幸いです。

 よろしくお願いいたします。

▲pagetop

[2103] Re: C#での列挙型

投稿日 18/06/19-23:17
投稿者 通りすがり
参照先

ドットネット的なアプローチから少し試してみたのですが、どうもうまくゆかないようです。
せめて、エラー時にスタックトレースがそのまま表示されれば、推測もできるのですが、
エラーメッセージからでは、原因を絞るのは難しそうです。
エラーそのものは、Emum型の静的メソッドのParseを呼び出すところで失敗します。
(引数のシグネチャが合わないのか、SFが空なのか、SFの前のSpecialFolder型が空なのか・・・)
--------------------
Type型というドットネット型(「System.Type」)を作る
Enum型というドットネット型(「System.Enum」)を作る
Boolean型というドットネット型(「System.Boolean」)を作る
Environment型というドットネット型(「System.Environment」)を作る
SpecialFolder型というドットネット型(「System.Environment.SpecialFolder」)を作る
Type型から「GetType」を{「System.Environment.SpecialFolder」}で呼び出す
それをSFへ代入する
Boolean型から「Parse」を{「True」}で呼び出す
それをBoolTrueへ代入する
Enum型から「Parse」を{SF,「System」}で呼び出す
それをSFSystemへ代入する
Environment型から「GetFolderPath」を{SFSystem}で呼び出す
-------------
処理途中がうまくいっているのか、失敗しているのかを調べる方法(IsEmpty的な)も不明でした。
※BoolTrueは、Parseの第3引数に指定するとき用で、上記では使ってません。なお、こちらのParseは成功しているようです。

▲pagetop

[2106] Re^2: C#での列挙型

投稿日 18/06/20-04:39
投稿者 ゆうと
参照先

こんにちは ゆうとです。
ドットネット型について挙動が怪しい箇所がいくつかありましたので最新版で修正しつつ
通りすがりさんの列挙型のプロデルのプログラムも手を付けさせて頂きました。

なお、正しく型が取得できたかどうかなど変数値の状態は、「調査ウィンドウ」(Ctrl+G)で確認できます。
ご活用ください。

-----------------
Type型というドットネット型(「System.Type」)を作る
Enum型というドットネット型(「System.Enum」)を作る
Environment型というドットネット型(「System.Environment」)を作る
// クラスにネストしている列挙型は「+」にしないとダメなようです
SpecialFolder型というドットネット型(「System.Environment+SpecialFolder」)を作る
// 「管理型」設定項目で、.NETのインスタンスを得られます
Enum型から「Parse」を{SpecialFolder型の管理型,「System」}で呼び出す
それをSFSystemへ代入する
Environment型から「GetFolderPath」を{SFSystem}で呼び出す
それを報告する
-------------------

同じプログラムですが、別の方法で型を取得する方法も書いてみました。
-----------------
Environment型というドットネット型(「System.Environment」)を作る
SpecialFolder管理型=Environment型の管理型:GetNestedType(「SpecialFolder」)
Enum型から「Parse」を{SpecialFolder管理型,「System」}で呼び出してSFSystemとする
Environment型から「GetFolderPath」を{SFSystem}で呼び出す
それを報告する
-----------------

▲pagetop

[2110] ありがとうございます

投稿日 18/06/20-18:35
投稿者
参照先 https://riku22.net/

 こんにちは、お世話になります。

 ありがとうございます。
 なかなか難しそうですが、ぼちぼちやってみます。
 ありがとうございました。

 今後ともよろしくお願いいたします。

▲pagetop

[2112] Re^3: C#での列挙型

投稿日 18/06/21-01:29
投稿者 通りすがり
参照先

ありがとうございます。クラスと同名のネームスペース(パッケージ名?)があり、そこの下にあると思い、階層を勘違いていました。
SpecialFolderは、いわゆる、内部クラスのようなものなのですね。
pluginの形にしなくても、結構そのままdotnetのフレームワークを直接操作できそうな感じなので、いろいろ試してみようと思います。

▲pagetop
▲ページの先頭へ

- WebForum -