이 T4를위한 작업 같은 소리!
T4와 리플렉션을 사용하여 이러한 모든 속성을 가진 부분 클래스를 만들 수 있습니다.이 클래스가 하나 뿐인 경우 수동으로 수행하는 것보다 더 많은 작업이 필요할 수 있습니다. 나는 당신이 얼마나 자주 그것을 사용하기를 원할 것인지를 결정할 필요가 있다고 생각합니다.
는
편집 : 텍스트 템플릿 변환 키트
그것은 비주얼 스튜디오에 내장되어 당신을 위해 코드를 생성 템플릿을 작성하는 방법을 alows :
T4는 것을 의미한다.
반복적 인 코드 또는 상용구 코드를 작성할 필요가있을 때 언제든지 유용 할 수 있습니다.
나는 당신을 위해 시작했습니다. MyUserControl.tt라는 솔루션에 새 파일을 만들고 아래 코드를 복사하십시오.
저장하자 마자 MyUserControl.cs라는 새 파일이 나타나고 모든 속성을 나열합니다.
부분 클래스를 만들기 때문에 클래스 이름과 네임 스페이스를 기존 사용자 정의 컨트롤과 트위 킹해야합니다. 나는 당신의 텍스트 박스의 이름이 타겟이라고 생각했지만, 분명히 그것도 트위크시킬 수있다.
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Web" #>
<#@ import namespace="System.Reflection" #>
public partial class MyUserControl
{
<#
PropertyInfo[] properties = typeof(System.Web.UI.WebControls.TextBox).GetProperties(
BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo property in properties)
{
WriteLine(string.Format(" public {0} {1}", property.PropertyType.FullName, property.Name));
WriteLine(" {");
if(property.GetGetMethod() != null)
{
WriteLine(" get { return Target." + property.Name + "; } ");
}
if(property.GetSetMethod() != null)
{
WriteLine(" set { Target." + property.Name + " = value; } ");
}
WriteLine(" }");
WriteLine("");
}
#>
}
나는 OpenFileDialog를 상속하는 생각했지만, OpenFileDialog를 밀봉한다, 그래서 당신은 수동으로 할 또는 공공 재산으로 OpenFileDialog를 인스턴스를 정의 할 것 같아요. –