1

次のように、同じ基本タイプを持つオブジェクトのインスタンスを作成しようとしています。

  Assembly myAssembly = Assembly.GetExecutingAssembly();
  var objs = myAssembly.GetTypes().Where(t => t.BaseType == typeof(SearchLogicObjectBase)).OrderBy(o => o.FullName);

  foreach (var item in objs)
  {
    SearchLogicObjectBase p = (SearchLogicObjectBase)Activator.CreateInstance(item.GetType(), new Object[] { false });        
    _searchlogic.AddDefaultSearchObject(p);
  }

派生オブジェクトには、次のようなコンストラクターがあります。

public SearchLogicCsri()
  : this(true)
{ }

public SearchLogicCsri(bool extendsearch)
  : base(extendsearch)
{
  Table = "csri";
  ViewModel = "CsriViewModel";
  ExtendSearch = extendsearch;
}

ベースオブジェクト(SearchLogicObjectBase)には、次のようなコンストラクターがあります。

public SearchLogicObjectBase(bool extendsearch)
{
  _extendsearch = extendsearch;
}

ただし、上記のコードでは次の例外が発生します。

タイプ'System.RuntimeType'のコンストラクターが見つかりません。

基本型と派生型の両方に単一のブール値をとるコンストラクターがあるため、エラーが発生する理由がわかりません。

誰か助けてもらえますか?

4

1 に答える 1

7

itemはすでに型であるため、item.GetType()ではなくitemを渡します。

于 2010-11-11T17:58:42.237 に答える