質問編集履歴
13
ベストアンサー後
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,63 +1,39 @@
|
|
1
1
|
### ベストアンサー後
|
2
2
|
|
3
|
+
頂いたコードを参考に
|
4
|
+
|
3
|
-
|
5
|
+
書き直してみました。
|
6
|
+
|
7
|
+
|
8
|
+
|
4
|
-
|
9
|
+
既存のインテリセンスに追加 したかったのですが
|
10
|
+
|
5
|
-
|
11
|
+
`TabExpansion` では方法が分からなかったため `TabExpansion2`を書き換えました。
|
6
|
-
|
7
|
-
|
12
|
+
|
8
|
-
|
13
|
+
|
14
|
+
|
9
|
-
定義した全てのクラス(Enum)が見たいときは `['まで打って Ctrl + Space で見られ
|
15
|
+
定義した全てのクラス(Enum)が見たいときは `['まで打って Ctrl + Space で見られます。
|
16
|
+
|
10
|
-
|
17
|
+
なぜか ISEのスクリプトウィンドウ内だと 表示されませんが
|
18
|
+
|
19
|
+
コンソールだと表示されます。
|
20
|
+
|
11
|
-
|
21
|
+
一先ずここで妥協します。
|
22
|
+
|
23
|
+
|
24
|
+
|
12
|
-
|
25
|
+
psm1 で保存し、ISEでの利用時には F8 等で 明示的に そのスクリプトを実行する必要があります。
|
26
|
+
|
13
|
-
|
27
|
+
```powershell
|
28
|
+
|
29
|
+
文字数超過で載せられませんでした
|
30
|
+
|
31
|
+
下記記載の「インテリセンス 追加コード」へお願い致します。
|
32
|
+
|
33
|
+
```
|
14
34
|
|
15
35
|
[インテリセンス 追加コード](https://sites.google.com/view/kmkzyozora/Home/Program/PowerShell/ReuseScript/Ex_TabExpansion2_psm1)
|
16
36
|
|
17
|
-
を全て選択して F8 で実行した場合は
|
18
|
-
|
19
|
-
表示されることが分かりました。
|
20
|
-
|
21
|
-
スクリプトファイルとして実行された場合のみのようです...
|
22
|
-
|
23
|
-
現在 対策を探しています。
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
表示できるようにするためにはF8等を使いコマンドとして必要があります。。
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
頂いたコードを参考に
|
32
|
-
|
33
|
-
書き直してみました。
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
既存のインテリセンスに追加 したかったのですが
|
38
|
-
|
39
|
-
`TabExpansion` では方法が分からなかったため `TabExpansion2`を書き換えました。
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
定義した全てのクラス(Enum)が見たいときは `['まで打って Ctrl + Space で見られま~~す。~~せん....
|
44
|
-
|
45
|
-
原因追求中です。
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
ps1 か psm1 で保存し、ISEでの利用時には F8 等で 明示的に そのスクリプトを実行する必要があります。
|
50
|
-
|
51
|
-
```powershell
|
52
|
-
|
53
|
-
文字数超過で載せられませんでした
|
54
|
-
|
55
|
-
下記記載の「インテリセンス 追加コード」へお願い致します。
|
56
|
-
|
57
|
-
```
|
58
|
-
|
59
|
-
[インテリセンス 追加コード](https://sites.google.com/view/kmkzyozora/Home/Program/PowerShell/ReuseScript/Ex_TabExpansion2_psm1)
|
60
|
-
|
61
37
|
|
62
38
|
|
63
39
|
|
12
ベストアンサー後
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,6 +10,16 @@
|
|
10
10
|
|
11
11
|
書き換えたら でなくなりました。
|
12
12
|
|
13
|
+
|
14
|
+
|
15
|
+
[インテリセンス 追加コード](https://sites.google.com/view/kmkzyozora/Home/Program/PowerShell/ReuseScript/Ex_TabExpansion2_psm1)
|
16
|
+
|
17
|
+
を全て選択して F8 で実行した場合は
|
18
|
+
|
19
|
+
表示されることが分かりました。
|
20
|
+
|
21
|
+
スクリプトファイルとして実行された場合のみのようです...
|
22
|
+
|
13
23
|
現在 対策を探しています。
|
14
24
|
|
15
25
|
|
@@ -30,7 +40,7 @@
|
|
30
40
|
|
31
41
|
|
32
42
|
|
33
|
-
定義した全てのクラス(Enum)が見たいときは `['まで打って Ctrl + Space で見られま~~す。~~
|
43
|
+
定義した全てのクラス(Enum)が見たいときは `['まで打って Ctrl + Space で見られま~~す。~~せん....
|
34
44
|
|
35
45
|
原因追求中です。
|
36
46
|
|
11
ベストアンサー後
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,15 +1,23 @@
|
|
1
1
|
### ベストアンサー後
|
2
2
|
|
3
|
-
欠点が見つかりました
|
3
|
+
~~欠点が見つかりました
|
4
|
-
|
4
|
+
|
5
|
-
インテリセンスに表示させたいクラスの定義がスクリプトとして実行されたこの方法ではインテリセンスに表示されませんでした。
|
5
|
+
インテリセンスに表示させたいクラスの定義がスクリプトとして実行されたこの方法ではインテリセンスに表示されませんでした。~~
|
6
|
+
|
6
|
-
|
7
|
+
一先ず出来たのですが、
|
8
|
+
|
9
|
+
定義した全てのクラス(Enum)が見たいときは `['まで打って Ctrl + Space で見られるようにしていたのに
|
10
|
+
|
7
|
-
|
11
|
+
書き換えたら でなくなりました。
|
8
12
|
|
9
13
|
現在 対策を探しています。
|
10
14
|
|
11
15
|
|
12
16
|
|
17
|
+
表示できるようにするためにはF8等を使いコマンドとして必要があります。。
|
18
|
+
|
19
|
+
|
20
|
+
|
13
21
|
頂いたコードを参考に
|
14
22
|
|
15
23
|
書き直してみました。
|
@@ -22,7 +30,9 @@
|
|
22
30
|
|
23
31
|
|
24
32
|
|
25
|
-
定義した全てのクラス(Enum)が見たいときは `['まで打って Ctrl + Space で見られます。
|
33
|
+
定義した全てのクラス(Enum)が見たいときは `['まで打って Ctrl + Space で見られま~~す。~~ぜん....
|
34
|
+
|
35
|
+
原因追求中です。
|
26
36
|
|
27
37
|
|
28
38
|
|
10
ベストアンサー後
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,19 +28,15 @@
|
|
28
28
|
|
29
29
|
ps1 か psm1 で保存し、ISEでの利用時には F8 等で 明示的に そのスクリプトを実行する必要があります。
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
スクリプトで実行すると一部コレクションが読み取り専用になり
|
34
|
-
|
35
|
-
動作不良を起こすことが分かったので修正中です。
|
36
|
-
|
37
|
-
```powershell
|
31
|
+
```powershell
|
32
|
+
|
38
|
-
|
33
|
+
文字数超過で載せられませんでした
|
34
|
+
|
39
|
-
|
35
|
+
下記記載の「インテリセンス 追加コード」へお願い致します。
|
40
|
-
|
36
|
+
|
41
|
-
```
|
37
|
+
```
|
38
|
+
|
42
|
-
|
39
|
+
[インテリセンス 追加コード](https://sites.google.com/view/kmkzyozora/Home/Program/PowerShell/ReuseScript/Ex_TabExpansion2_psm1)
|
43
|
-
|
44
40
|
|
45
41
|
|
46
42
|
|
9
ベストアンサー後
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
欠点が見つかりました
|
4
4
|
|
5
|
-
クラスの定義がスクリプトとして実行されたこの方法ではインテリセンスに表示されませんでした。
|
5
|
+
インテリセンスに表示させたいクラスの定義がスクリプトとして実行されたこの方法ではインテリセンスに表示されませんでした。
|
6
6
|
|
7
7
|
表示できるようにするためにはF8等を使いコマンドとして必要があります。
|
8
8
|
|
@@ -36,6 +36,8 @@
|
|
36
36
|
|
37
37
|
```powershell
|
38
38
|
|
39
|
+
|
40
|
+
|
39
41
|
```
|
40
42
|
|
41
43
|
|
8
ベストアンサー後
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,46 @@
|
|
1
1
|
### ベストアンサー後
|
2
2
|
|
3
|
+
欠点が見つかりました
|
4
|
+
|
5
|
+
クラスの定義がスクリプトとして実行されたこの方法ではインテリセンスに表示されませんでした。
|
6
|
+
|
7
|
+
表示できるようにするためにはF8等を使いコマンドとして必要があります。
|
8
|
+
|
9
|
+
現在 対策を探しています。
|
10
|
+
|
11
|
+
|
12
|
+
|
3
13
|
頂いたコードを参考に
|
4
14
|
|
15
|
+
書き直してみました。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
既存のインテリセンスに追加 したかったのですが
|
20
|
+
|
21
|
+
`TabExpansion` では方法が分からなかったため `TabExpansion2`を書き換えました。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
定義した全てのクラス(Enum)が見たいときは `['まで打って Ctrl + Space で見られます。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
ps1 か psm1 で保存し、ISEでの利用時には F8 等で 明示的に そのスクリプトを実行する必要があります。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
スクリプトで実行すると一部コレクションが読み取り専用になり
|
34
|
+
|
5
|
-
|
35
|
+
動作不良を起こすことが分かったので修正中です。
|
36
|
+
|
37
|
+
```powershell
|
38
|
+
|
39
|
+
```
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
6
44
|
|
7
45
|
|
8
46
|
|
7
ベストアンサー後
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
-
###
|
1
|
+
### ベストアンサー後
|
2
|
+
|
3
|
+
頂いたコードを参考に
|
4
|
+
|
5
|
+
自分なりにまとめたら載せます。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
### 途中経過 2019.03.06時点
|
2
10
|
|
3
11
|
一先ずpublicなクラスを継承して
|
4
12
|
|
6
補足情報の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -240,7 +240,7 @@
|
|
240
240
|
|
241
241
|
Win10
|
242
242
|
|
243
|
-
powerShell Ver V5
|
243
|
+
powerShell_ISE Ver V5
|
244
244
|
|
245
245
|
|
246
246
|
|
5
追記の訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,12 +2,14 @@
|
|
2
2
|
|
3
3
|
一先ずpublicなクラスを継承して
|
4
4
|
|
5
|
-
NameSpace
|
5
|
+
NameSpace を利用する 手段は見つけました。
|
6
|
-
|
6
|
+
|
7
|
-
|
7
|
+
一度実行すればタイプ指定時のインテリセンスも使えました。
|
8
8
|
|
9
9
|
```powershell
|
10
10
|
|
11
|
+
Using Module .\class.psm1
|
12
|
+
|
11
13
|
[System.Reflection.AssemblyName] $AssemblyName = "assemblyBuilder"
|
12
14
|
|
13
15
|
|
@@ -26,31 +28,49 @@
|
|
26
28
|
|
27
29
|
|
28
30
|
|
29
|
-
$TypeBuilder = $moduleBuilder.DefineType("kmkz.Form",[System.Reflection.TypeAttributes]::Public,[System.Windows.Forms.Form])
|
31
|
+
$TypeBuilder = $moduleBuilder.DefineType("kmkz.Form", [System.Reflection.TypeAttributes]::Public, [System.Windows.Forms.Form])
|
30
32
|
|
31
33
|
|
32
34
|
|
33
35
|
$TypeBuilder.CreateType() > $null
|
34
36
|
|
37
|
+
|
38
|
+
|
39
|
+
$TypeBuilder.Assembly.GetTypes().NameSpace | sort -Unique | foreach { Write-Host "ネームスペース : $_" }
|
40
|
+
|
41
|
+
Write-Host "フルネーム : $($Form.GetType().FullName)"
|
42
|
+
|
43
|
+
|
44
|
+
|
35
45
|
$Form = [kmkz.Form]::new()
|
36
46
|
|
37
|
-
|
38
|
-
|
39
|
-
Write-Host "$($Form.GetType().FullName)"
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
$Form.ShowDialog()
|
47
|
+
$Form.ShowDialog() > $null
|
44
|
-
|
48
|
+
|
49
|
+
|
50
|
+
|
45
|
-
```
|
51
|
+
```
|
46
|
-
|
52
|
+
|
47
|
-
ですがメソッド等の
|
53
|
+
ですがメソッド等の追加の仕方も分からないですし...
|
48
|
-
|
54
|
+
|
49
|
-
自分で作ったクラスも継承できません
|
55
|
+
自分で作ったクラスも継承できません
|
56
|
+
|
50
|
-
|
57
|
+
`[System.Reflection.TypeAttributes]::Public, [System.Windows.Forms.Form])`の`[System.Windows.Forms.Form]`を自分で定義したクラスにすると
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
```
|
62
|
+
|
63
|
+
"3" 個の引数を指定して "DefineType" を呼び出し中に例外が発生しました: "回収不可能アセンブリから回収可能アセンブリを参照することはできません。"
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
っとエラーになります.....
|
68
|
+
|
51
|
-
も
|
69
|
+
**回収不可能アセンブリ** も **回収可能アセンブリ** も調べても何のことだか全くわかりません。
|
52
|
-
|
70
|
+
|
71
|
+
|
72
|
+
|
53
|
-
|
73
|
+
もし自作のクラスが継承できればそれで 一先ず目標は達成できるのですが...
|
54
74
|
|
55
75
|
|
56
76
|
|
@@ -60,8 +80,6 @@
|
|
60
80
|
|
61
81
|
|
62
82
|
|
63
|
-
|
64
|
-
|
65
83
|
### 前提・実現したいこと
|
66
84
|
|
67
85
|
|
4
間違い修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -34,9 +34,9 @@
|
|
34
34
|
|
35
35
|
$Form = [kmkz.Form]::new()
|
36
36
|
|
37
|
-
|
37
|
+
|
38
|
-
|
38
|
+
|
39
|
-
Write-Host "$($
|
39
|
+
Write-Host "$($Form.GetType().FullName)"
|
40
40
|
|
41
41
|
|
42
42
|
|
3
途中経過
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,3 +1,67 @@
|
|
1
|
+
### 途中経過
|
2
|
+
|
3
|
+
一先ずpublicなクラスを継承して
|
4
|
+
|
5
|
+
NameSpace ? なのかよくわかりませんが
|
6
|
+
|
7
|
+
クラスをカンマ区切りで指定できる手段は見つけました。
|
8
|
+
|
9
|
+
```powershell
|
10
|
+
|
11
|
+
[System.Reflection.AssemblyName] $AssemblyName = "assemblyBuilder"
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
$appDomain = [AppDomain]::CurrentDomain
|
16
|
+
|
17
|
+
$assemblyBuilder = $appDomain.DefineDynamicAssembly(
|
18
|
+
|
19
|
+
$AssemblyName,
|
20
|
+
|
21
|
+
[System.Reflection.Emit.AssemblyBuilderAccess]::Run
|
22
|
+
|
23
|
+
)
|
24
|
+
|
25
|
+
$moduleBuilder = $assemblyBuilder.DefineDynamicModule($AssemblyName.Name)
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
$TypeBuilder = $moduleBuilder.DefineType("kmkz.Form",[System.Reflection.TypeAttributes]::Public,[System.Windows.Forms.Form])
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
$TypeBuilder.CreateType() > $null
|
34
|
+
|
35
|
+
$Form = [kmkz.Form]::new()
|
36
|
+
|
37
|
+
$Form.GetType().FullName
|
38
|
+
|
39
|
+
Write-Host "$($test.ToString())"
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
$Form.ShowDialog()
|
44
|
+
|
45
|
+
```
|
46
|
+
|
47
|
+
ですがメソッド等のの追加の仕方も分からないですし...
|
48
|
+
|
49
|
+
自分で作ったクラスも継承できませんし.....
|
50
|
+
|
51
|
+
もしできれば普通にクラスを書いた後に何も変更せず継承させて
|
52
|
+
|
53
|
+
無理やりインテリセンスを使えるようにしてしまおうかと思ったのですが...
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
そもそも ダイナミックモジュールじゃなくて普通のモジュールでは出来ないのでしょうか....?
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
1
65
|
### 前提・実現したいこと
|
2
66
|
|
3
67
|
|
@@ -90,8 +154,6 @@
|
|
90
154
|
|
91
155
|
$test = [te2st]::new()
|
92
156
|
|
93
|
-
$test.ToString()
|
94
|
-
|
95
157
|
```
|
96
158
|
|
97
159
|
結果は良好 staticメンバ も instanceメンバ もしっかりインテリセンスが使えました。
|
2
経緯の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -26,7 +26,9 @@
|
|
26
26
|
|
27
27
|
そんな中 [とある質問](https://teratail.com/questions/172043)での**Zuishin様**からの回答をきっかけに クラスの継承を 使うようになりました。
|
28
28
|
|
29
|
+
ですが、自分で定義したクラスをさらに継承(多重継承?)しようとした場合
|
30
|
+
|
29
|
-
|
31
|
+
今まで使っていた 変数に格納したクラスでは 継承が出来ず 再びインテリセンスが使えない状態に陥ってしまいました。
|
30
32
|
|
31
33
|
「どうせインテリセンスが使えないのなら全て諦めてしまおうと」そう思ったのですが、
|
32
34
|
|
1
補足
test
CHANGED
File without changes
|
test
CHANGED
@@ -159,3 +159,11 @@
|
|
159
159
|
Win10
|
160
160
|
|
161
161
|
powerShell Ver V5
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
どのパソコンで作業、実行 するのか決まっていないのと
|
166
|
+
|
167
|
+
毎回全てのクラスを使うわけではない(一つのプロジェクトのみでしか利用しないのもある)ので
|
168
|
+
|
169
|
+
プロファイル等 設定済みPCでしか利用できない方法は使えません。
|