1

インターフェイスによって制約されているジェネリック メソッド内で新しく作成されたオブジェクトのプロパティにアクセスしたい:

public interface MyInterface
{
    int ID { get; set; }
    string Name { get; set; }
}

コンパイラは "T" が MyInterface 型であることを認識しているため、そのインターフェイスのプロパティにアクセスできるはずです。

public T doSomething<T>(String value) where T : MyInterface, new()
{
    T entity =  new T();
    entity.Name = value;    
    return entity;
}

しかし、次のように書かれています:Tには「名前」の定義がありません

ここでインターフェイスを制約として使用できる場合: プロパティにアクセスできないのはなぜですか?

4

2 に答える 2

1

投稿したコード自体は正しいです。インターフェースのバージョンが異なる可能性があります (異なる名前空間の MyInterface)。インターフェイス タイプの名前空間/完全修飾名を確認してください。また、別のアセンブリで型を宣言する場合は、アセンブリのバージョンを確認してください...

于 2015-03-26T13:40:36.130 に答える