특정 유형의 인스턴스를 구성하기 위해로드해야하는 그래픽 디자이너를 정의하는 데 사용합니다.
즉, 가능한 모든 명령 유형을 어셈블리에서로드하는 일종의 워크 플로 디자이너가 있습니다. 이러한 명령 유형에는 구성해야하는 속성이 있으므로 모든 명령 유형마다 다른 디자이너 (usercontrol)가 필요합니다. 디자이너가 명령 목록을 만들 때
는 예를 들어,
[CompositeMetaData("Delay","Sets the delay between commands",1)]
[CompositeDesigner(typeof(DelayCompositeDesigner))]
public class DelayComposite : CompositeBase
{
// code here
}
이 정보는 두 곳
1
)에 사용된다 (우리의 솔루션에 복합라고 함) 다음 명령 유형을 고려 CompositeMetaData 을 사용하여 명령에 대한 추가 정보를 표시합니다. 사용자가 디자이너에 명령을 추가하고 디자이너가 해당 클래스의 인스턴스가, 그것은 CompositeDesigner 속성에 보이는 만들 때
2), 지정된 유형 (UserControl을)의 새로운 인스턴스를 생성에 를 추가합니다 비주얼 디자이너.
는 우리가 우리의 "도구 모음"에 명령을로드하는 데 사용하는 다음 코드를 고려하십시오
당신이 볼 수 있듯이, 이름은 "복합" 로 끝나는있는 어셈블리의 모든 유형에 대한 사용자 지정 특성을 가져 와서이 정보를 사용하여 ToolboxListItem 인스턴스를 채 웁니다.
은 디자이너를로드에 관해서는, 속성은 다음과 같이 입수해온된다
var designerAttribute = (CompositeDesignerAttribute)item.CompositType.GetCustomAttributes(false)
.Where(a => a.GetType() == typeof(CompositeDesignerAttribute)).FirstOrDefault();
이이 당신을 제공합니다 사용자 정의 속성을 사용할 수있게하는 방법의 한 예를 들면, 나는 희망
입니다 시작할 장소.
Visual Studio 디자이너에서도 사용됩니다. –
그리고 이것들은 힌트 일뿐입니다. 코드에서 MyPoperty의 기본값을 100으로 설정해야합니다. 그렇지 않으면 재산 소비자에게 거짓말을하게됩니다. –