1

クラス名が文字列の場合、クラスのプロパティを取得できますか? 私のエンティティはクラス ライブラリ プロジェクトにあり、型を取得してアセンブリを取得するためにさまざまな方法を試しましたが、クラス インスタンスを取得できません。

var obj = (object)"User";
var type = obj.GetType();
System.Activator.CreateInstance(type);

object oform;
var clsName = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("[namespace].[formname]");

Type type = Type.GetType("BOEntities.User");
Object user = Activator.CreateInstance(type);

何も機能していません

4

3 に答える 3

4

私はあなたが探していると思う:

Type type = Type.GetType("User");
Object user = Activator.CreateInstance(type);

ノート:

  • mscorlib名前にアセンブリも指定しない限り、これは現在実行中のアセンブリのみを検索します
  • 名前空間で修飾された名前である必要があります。MyProject.User

編集:別のアセンブリの型にアクセスするには、アセンブリ修飾型名を使用するか、単に使用できますAssembly.GetType

Assembly libraryAssembly = typeof(SomeKnownTypeInLibrary).Assembly;
Type type = libraryAssembly.GetType("LibraryNamespace.User");
Object user = Activator.CreateInstance(type);

(あなたの質問ではそれについて何も話していないので、プロパティの取得については触れていないことに注意してください。しかし、Type.GetPropertiesうまくいくはずです。)

于 2013-02-20T11:22:00.523 に答える
2

クラス名が文字列の場合、クラスのプロパティを取得できますか?

もちろん:

var type = obj.GetType();
PropertyInfo[] properties = type.GetProperties();

これにより、パブリック インスタンス プロパティのリストが取得されます。プライベート プロパティまたは静的プロパティにアクセスする必要がある場合は、次のことを示す必要がある場合があります。

var type = obj.GetType();
PropertyInfo[] properties = type.GetProperties(BindingFlags.NonPublic);
于 2013-02-20T11:22:19.743 に答える
0

試す

Type type = Type.GetType("Assembly with namespace");
于 2013-02-20T11:23:35.037 に答える