私は抽象クラスDevice
を持っています。特定のデバイスを表す多数のクラスが派生しています。たとえば、 class RedDevice : Device
,class BlueDevice : Device
などです。これらはすべてFoo.Devices
名前空間に格納されています。ここでは構造の概要を示します:リフレクションを使用してネームスペース内のすべてのクラスのリストを作成し、その実タイプにキャスト
- Foo
| ↳ Devices (folder)
| | ↳ RedDevice
| | ↳ BlueDevice
| ↳ Device
Device.cs
:
internal abstract class Device
{
internal string Path { get; set; }
}
RedDevice.cs
:
class RedDevice
{
internal RedDevice()
{
this.Path = "/path";
}
}
私はFoo.Devices
の下ですべてのデバイスのリストを作成したい、自分の親クラスDevice
にキャスト。
List<System.Type> deviceTypes =
Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Namespace ==
typeof(RedDevice).Namespace).ToList();
しかし、どのように私はDevice
にそれらをキャストすることができます:私は、次のコードを使用してType
のリストを得ることができますか?ダイレクトキャストはコンパイラによって許可されておらず、他のすべてが間違った型の例外をスローします。ありがとう!
タイプオブジェクトは、型(クラス)に関するメタデータを保持します。そのクラスの実際のインスタンスではありません。 – thehennyy