2017-10-06 19 views
0

thisのドキュメントのとおり、私はIsAssignableFromメソッドを使用しようとしています。あなたは(見つけることができタイプにはIsAssignableFromの定義が含まれていません。

エラーCS1061「種類」「IsAssignableFrom」となし拡張メソッドの定義が含まれていません「IsAssignableFrom」「type」型の最初の引数を受け入れる:しかし、私は次の例外を取得します?使用して、ディレクティブまたはアセンブリ参照が不足している)

問題のラインは、次のクラスで

if (!desiredType.IsAssignableFrom(outputType))

ある:

internal class DefaultResolvable : IResolvable 
{ 
    internal IDictionary<Type, Type> TypeContainer { get; set; } 

    public T Resolve<T>() 
    { 
     if(this.TypeContainer == null) 
     { 
      throw new TypeRepositoryEmptyException(); 
     } 

     var desiredType = typeof(T); 
     var outputPair = this.TypeContainer.FirstOrDefault(pair => pair.Key == desiredType); 
     if(outputPair.Key == null || outputPair.Value == null) 
     { 
      throw new CannotResolveTypeException(); 
     } 

     var outputType = outputPair.Value; 
     if (!desiredType.IsAssignableFrom(outputType)) 
     { 
      throw new CannotResolveTypeException(); 
     } 

     return (T)Activator.CreateInstance(outputType); 
    } 
} 

ここには何かがありますか?なぜこの例外が発生するのですか?ネット標準または.NETのコアで

+0

万が一.NETコアをターゲットに? – Jamiec

+0

.Netコアを使用していますか? –

+0

ターゲット設定.Net Standard 1.6 – Janushoff

答えて

3

あなたはGetTypeInfo()を呼び出す必要があります:

if (!desiredType.GetTypeInfo().IsAssignableFrom(outputType)) 
+0

乾杯、私はスタンダードでそうしなければならないことを知らなかった! – Janushoff

+0

@Janushoff、あなたは歓迎です –

+0

素晴らしい、ちょうど 'System.Reflection'名前空間を追加する必要がありました。 –

関連する問題