У меня есть interface
:
public interface ITestInterface
{
int TestInt { get; set; }
}
и этот общий метод (с ограничением T : class
):
public void Test<T>() where T : class
{
// DoSomething
}
и этот вызов:
Test<ITestInterface>();
и все компилируется и запускается, пока interface
не a class
(или это?).
Почему это происходит?
Я впервые увидел это в моем прокси-классе WCF:
public partial class TestServiceClient:
System.ServiceModel.ClientBase<TestNamespace.ITestService>, TestNamespace.ITestService
где ClientBase<T>
имеет это определение:
public abstract class ClientBase<TChannel> :
ICommunicationObject, IDisposable where TChannel : class