Warum wird bei einer generischen <T> -Methode mit einer Einschränkung "where T: class" eine Schnittstelle akzeptiert
Ich habe dasinterface
:
public interface ITestInterface
{
int TestInt { get; set; }
}
und diese generische Methode (mit einemT : class
Einschränkung):
public void Test<T>() where T : class
{
// DoSomething
}
und dieser Aufruf:
Test<ITestInterface>();
und alles wird kompiliert und ausgeführt, während eininterface
ist nich a class
(oder ist es?)
Warum passiert das
Ich habe das zum ersten Mal in meiner WCF-Proxy-Klasse gesehen:
public partial class TestServiceClient:
System.ServiceModel.ClientBase<TestNamespace.ITestService>, TestNamespace.ITestService
woClientBase<T>
hat diese Definition:
public abstract class ClientBase<TChannel> :
ICommunicationObject, IDisposable where TChannel : class