2012-04-13 21 views

cevap

41

bütün arayüz jenerik olması gerekiyorsa:

public interface IExample<T> 
{ 
    int GetInteger(); 
    T GetAnything(); 
} 

yöntem jenerik olması gerekiyor Keşke: o zaman tüm arayüzü (IExample) jenerik olmak istemiyorum Eğer

public interface IExample 
{ 
    int GetInteger(); 
    T GetAnything<T>(); 
} 
+2

+1 sorusunu sorduğunu düşünme. Bu yöntemin kendi tür parametresine sahip olabileceğini tamamen unutmuşum :) – flai

+2

Eğer mümkünse kovaryans kullanmak için .NET 4.0 kullanıyorsa: public interface IExample , T GetAnything (); – dvvrd

+1

Arabirim işlevini nasıl uygularım? – River

5
public interface IExample<T> 
{ 
    int GetInteger() 
    T GetAnything(); 
} 

Tadaa :)!

Veya Alternatif olarak, System.Object öğesini döndürebilir ve istediğiniz şeye atabilirsiniz.

+2

Bu oldukça çirkin - 'System.Object geri dönüp – sll

+0

want.' ne olursa olsun onu at Bunun – NominSim

3

, bunu yapmanın çok

public interface IExample 
{ 
    int GetInteger(); 
    T GetAnything<T>();  
} 
+1

sadece açıklığa kavuşturmak için, yöntemi bir arabirimde bu şekilde bildirirseniz, arabirimi uygulayan sınıfa uyguladığınızda, bunu genel bir yöntem olarak saklamanız gerekir ve yalnızca sizin türünüzü belirtebilirsiniz. sınıfta değil, arabirimi uygulayan sınıftan başlatılan nesne üzerindeki yöntemi çağırın. – daleotar

İlgili konular