2016-11-02 3 views
0

저는 C#으로 UWP 코딩을하고 있습니다. 나는 약간 사각형으로 약간의 그리드를 완료했습니다 : 나는 클래스의 많은 방법으로 그것을 한 적이모든 코드에서 유형을 변경하는 방법

Rectangle r = new Rectangle(); 

. 런타임시가 아니라 타원에서 모든 직사각형을 빠르게 변경하기 위해 (예 : 클래스 또는 변수와 같은) 제네릭 형식을 만들 것입니다. 내 말은 뭔가 같은 :

Type ShapeType = typeof(Rectangle); 

만들 :

ShapeType figure = new ShapeType(); ... 

을하지만 내일

Type ShapeType = typeof(Rectangle); 

Type ShapeType = typeof(Ellipse); 

변화 할 수 있어야하고, 모든 모양을 변경 내 암호. 이것이 가능한가? "Rectangle-like"또는 "Ellipse-like"클래스를 만들려면 어떻게해야합니까?

가의 중복으로 표시된 감사합니다 "타입에서 새 개체 인스턴스를 가져옵니다 항상 컴파일시 객체의 유형을 알 수 없습니다 만, 인스턴스를 생성해야 하나 Type에서 새 객체 인스턴스를 얻으려면 어떻게해야합니까? "

런타임에 객체를 만들고 싶다고 쓰여 있습니다. 아니면 단지 내가 객체를 만들고 싶습니까? 제 질문은 "제네릭 형식을 만드는 많은 코드 줄에서 정의 된 형식을 (코드에서) 쉽게 변경하는 방법"에 관한 것입니다.

+2

당신은 제네릭을 찾고 있습니다. – SLaks

+1

@SLaks에는 좋은 제안이 있습니다. 그러나 Ctrl + H를 사용해 볼 수있는 제안이 있습니다. – lindexi

+0

질문이 정말 불분명합니다. 조금 더 설명해 주시겠습니까? 내가 모은 것에서 코드 *를 한꺼번에 대체하려고합니다. 그건 편집자에 관한 질문입니다. – Rob

답변

1

가장 간단한 해결책은 사용하려고 결정한 요소의 새 인스턴스를 만드는 팩터 리 메서드를 사용하는 것입니다.

그것은 다음과 같을 수 있습니다 : UWP의 모든 Shape 요소를 기본 클래스로 Shape을 가지고 있기 때문에

private Shape CreateShape() => new Rectangle(); 

, 당신은 당신의 메서드의 반환 형식으로와 "기본"으로 사용할 수있는 모든 입력 모양을 사용하는 장소. 다음으로 Rectangle의 인스턴스를 생성 이제 모든 라인을 대체 할 수

: 당신이 나중에 Ellipse에 유형을 변경할 것을 결정하는 경우

var shape = CreateShape(); 

, 당신은 단지 하나의 코드를 변경 장소 : CreateShape 방법 :

private Shape CreateShape() => new Ellipse(); 
+0

많은 좋은 제안 주셔서 감사합니다! – LaVINCENT

관련 문제