4

vb.netの学習を始めたばかりです。しかし、 System.Type クラスがどこにあるのかわかりませんでした。私はグーグルで検索しましたが、答えが見つかりませんでした。これが私がしたことです:

Module m
Sub Main(ByVal e as String())
Dim ass as Assembly = Assembly.LoadFrom(e(0))
Dim assobj as Type() = ass.GetTypes()
For Each m As Type In assobj
Console.WriteLine(m.Name)
next

ディレクトリを C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727> に変更し、System.dll を引数として指定しましたが、Type クラスが見つかりませんでした

では、Type クラスはどこにあるのでしょうか??

何か問題がある場合は、私の無知を無視してください。ありがとうございました。

こんにちは、別の問題が発生しました。上記のすべては、Java の javap.exe ユーティリティに似たコンソール アプリを作成することに関するものです。

クラスのフルネームを引数として指定すると、クラスに関する実質的な情報が出力されます。

問題は、入力として指定したクラス名に応じて、どの.dllファイルをロードするかをどのように知るのですか???(これが、System.TypeがSystem.dllファイルにあると予想した理由です)

4

2 に答える 2

2

MichalとMrListerが述べたように、それはmscorlib.dllにあります。

あなたのコードを取るなら、私はそれを別の方法で見つけました

Dim assobj as Type() = ass.GetTypes()

「タイプ」という単語を右クリックして、「定義に移動」(ショートカットキーF12)を押します。

デフォルトの表示は、VB.netとC#では少し異なります。(とにかく私にとって)

VB.Netの場合:

オブジェクトブラウザが表示され、タイプがシステムのメンバーであることがわかります
オブジェクトブラウザでのタイプの定義

[システム]をクリックすると、mscorlibのメンバーであることがわかります。mscorlibをクリックすると、DLLが実際に保存されている場所を確認できます。

オブジェクトブラウザでのシステムの定義


C#を使用している場合は、次のように表示されます。

#region Assembly mscorlib.dll, v4.0.30319
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\mscorlib.dll
#endregion

using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Runtime;
using System.Runtime.InteropServices;
using System.Security;

namespace System
{
    // Summary:
    //     Represents type declarations: class types, interface types, array types,
    //     value types, enumeration types, type parameters, generic type definitions,
    //     and open or closed constructed generic types.
    [Serializable]
    [ClassInterface(ClassInterfaceType.None)]
    [ComDefaultInterface(typeof(_Type))]
    [ComVisible(true)]
    public abstract class Type : MemberInfo, _Type, IReflect
    {
        //snip
    }
}
于 2012-04-26T15:30:18.170 に答える
2

ILSpy(フリーツール)を使って調べてみました。それはmscorlib.dllにあります

于 2012-04-26T15:03:38.000 に答える