ho questo interface
:Perché un metodo generico <T> con un "dove T: classe" vincolo di accettare un'interfaccia
public interface ITestInterface
{
int TestInt { get; set; }
}
e questo metodo generico (con un vincolo T : class
):
public void Test<T>() where T : class
{
// DoSomething
}
e questa chiamata:
Test<ITestInterface>();
e tutto compila e ru ns mentre uno interface
non è a class
(o è?).
Perché succede?
ho visto questo sul mio WCF classe proxy:
public partial class TestServiceClient:
System.ServiceModel.ClientBase<TestNamespace.ITestService>, TestNamespace.ITestService
dove ClientBase<T>
ha questa definizione:
public abstract class ClientBase<TChannel> :
ICommunicationObject, IDisposable where TChannel : class
Vedere le risposte qui: http://stackoverflow.com/questions/1096568/how-can-i-use-interface-as-ac-sharp-generic-type-constraint –
Un'interfaccia non è una classe, ma è un contratto, una promessa che aspetto ha una classe. Quindi, se si dispone di una dichiarazione con un'interfaccia, il codice chiamante dovrebbe utilizzare un'istanza di un oggetto che implementa tale interfaccia. – GolezTrol
@o_weisman - Grazie amico, non lo trovo su google. –