2011-08-17 3 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; 
    } 
} 
관련 문제