11
を受け入れる私はこのinterface
持っている:なぜ "ここで、T:クラス" と総称<T>方法ない制約はインタフェース
public interface ITestInterface
{
int TestInt { get; set; }
}
と(T : class
制約付き)この一般的な方法:
public void Test<T>() where T : class
{
// DoSomething
}
を
とこの呼び出し:
Test<ITestInterface>();
すべてがコンパイルされ、ru interface
はであり、class
(またはそれですか?)ではありません。
どうしてですか?
は、私が最初に私のWCFプロキシクラスでこれを見た:
public abstract class ClientBase<TChannel> :
ICommunicationObject, IDisposable where TChannel : class
回答を参照してください:http://stackoverflow.com/questions/1096568/how-can-i-use-interface-as-ac-sharp-generic-type-constraint –
インターフェイスはクラスではありませんが、契約、クラスのように見える約束です。したがって、インタフェースを持つ宣言がある場合、呼び出しコードはそのインタフェースを実装するオブジェクトのインスタンスを使用する必要があります。 – GolezTrol
@o_weisman - ありがとうございました。グーグルで見つけられませんでした。 –