2009-06-18 11 views
1

나는 '다른'객체에 대한 참조를 저장하기 위해 List<AnotherClass>을 사용하는 여러 클래스 (A, B, C, ...)를 가지고 있습니다. 그러나 '다른'클래스 A의 각 다릅니다, B, C. 그래서 클래스 A에 포함 된 List<Class_X> 클래스 B는 List<Class_Y> 클래스 C는/검색 추가/삭제 (등) 기능을 구현하는 대신파생 된 목록에서 다른 클래스의 객체 처리

List<Class_Z>를 포함 포함 (A)에, B는 C가 위의 코드를 사용하여 List<T>

public class ListRef<T>: List<T> 
{ 
    protected ListRef<T> ListOfObjects = null; 
    protected string name = null; 

    public ListRef<T> 
    { 
     ListOfObjects = new ListRef<T>(); 
    } 
} 

에서 클래스 ListRef<T>을 만들기 위해 나에게 논리적 인 것 (이것은 내가 원하는에 적합한 코드?) 내가 제공 할 수 있습니다 방법을 모른다 올바른 클래스 (Class_X, Class_Y, Class_Z) 대체/지정 <T>은 ListRef를 사용할 각 클래스 (A, B, C)의 생성자에 있습니다.

public A() : base<Class_X> 
{ 
} 

어떻게 객체의 어떤 종류의 ListOfObjects에 저장해야하는 클래스 내에서 지정할 수 있습니다 : 클래스 A의 생성자에서

내가 좋아하는 뭔가를 쓰고 싶다? 내가 ListOfObjects이 개인 대신


보호 을 선언하고 싶은대로

내가

public A() 
{ 
    ListOfObjects = new ListRef<Class_X(); 
} 

쓰기 안함 난 그냥 추가 할 수 있도록

내부 Listref, 삭제, 개체 검색. 그래서 실제로 이러한 클래스 (Class_X, Class_Y, Class_Z)를 사용하지는 않습니다.

현재 제가

public class A 
{ 
    private List<Class_X> ListOfObjects = null; 
    A() 
    { 
     ListOfObjects = new List<Class_X>(); 
    } 

    public void Add(string Name) 
    { 
     Class_X Object = new Class_X(Name); 
     ListOfObjects.Add(Object); 
    } 
    public void Delete(Class_X Object) 
    { 
     ListOfObjects.Remove(Object); 
    } 
} 

있고 클래스 (Class_Y 사용) B 및 클래스 C에 대해 (class_Z 사용)에 대한 코드의 동종. 나에게 그것은 하나의 클래스 ListRef를 사용하여 추가 및 삭제 작업을 수행하고 내가 사용하는 모든 클래스에 대한 목록을 유지하는 것이 논리적 인 것처럼 보인다. 에 대한

public interface ISomeOtherClass 
{ 
} 

public class Class_X : ISomeOtherClass 
{ 
} 

public class Class_Y : ISomeOtherClass 
{ 
} 

public class BaseClass<T> where T : ISomeOtherClass 
{ 
    public ListRef<T> OtherObjects { get; set; } 
} 

public class A : BaseClass<Class_x> 
{ 
} 

public class B : BaseClass<Class_Y> 
{ 
} 
+1

List에서 상속 받고 클래스에서 서브 클래스를 사용하는 이유는 무엇입니까? 이것은 꽤 순환적인 것으로 보인다. –

+0

이 수업을 어떻게 사용하는지 보여 주면 도움이 될 것입니다. 그래서 우리는 당신이하고 싶은 것을 더 잘 이해할 수있게 될 것입니다. – CoderDennis

+0

Inside Listref 나는 단지 객체를 추가, 삭제, 검색 할 수 있기를 원한다. 그래서 실제로 이러한 클래스 (Class_X, Class_Y, Class_Z)를 사용하지는 않습니다. 현재 가지고 있습니다 공용 클래스 A { 개인 목록 ListOfObjects = null; A() { ListOfObjects = new List (); } public void Add (문자열 이름) { Class_X 개체 = 새 Class_X (이름); ListOfObjects.Add (Object); } public void Delete (Class_X Object) { ListOfObjects.Remove (Object); } } – SoftwareTester

답변

관련 문제