2011-08-17 27 views
1

我想有一個接口,取決於什麼類實現它,接口聲明的函數應該返回一個特定的類。C#接口函數返回類取決於它實現的地方

我應該使用類似這樣的東西嗎?

public interface IMyInterface 
{ 
    T returnClassInstance(); 
} 

當我想將它實現到類中時應該如何看待它?

public class MyClass : IMyInterFace 
{ 
    public T returnClassInstance() 
    { 
     ClassInstance class = new ClassInstance(); 
     return (T)class; 
    }  
} 

什麼是這樣的最佳方法?

回答

3

可以在接口使用泛型 -

public interface IMyInterface<T> 
{ 
    T returnClassInstance(); 
} 

雖然實現類這個接口,只需使用特定的類中通用

public class MyClass : IMyInterface<ClassInstance> 
{ 
    public ClassInstance returnClassInstance() 
    { 
     ClassInstance obj = new ClassInstance(); 
     return obj; 
    } 
} 
+0

'class'是一個保留關鍵字 – jgauffin

2

泛型

public interface IMyInterface<T> 
{ 
    T returnClassInstance(); 
} 

public class MyClass : IMyInterFace<ClassInstance> 
{ 
    public ClassInstance returnClassInstance() 
    { 
     ClassInstance class = new ClassInstance(); 
     return class; 
    }  
} 
+1

'class'是一個保留關鍵字,您可能想要使用適當的命名約定。 – jgauffin

+0

@jga - 變量和方法命名是OP的。爲了不混淆,我保持不變。 – Jamiec

1

你可以聲明如下:

public interface IMyInterface<T> 
{ 
    T ReturnClassInstance(); 
} 

,並實現它:

public class MyClass : IMyInterface<MyClass> 
{ 
    public T ReturnClassInstance() 
    { 
     return this; 
    } 
} 
相關問題