2009-05-14 5 views
3

저는 다음과 비슷한 클래스를 작성합니다 (멤버 수, 멤버 유형 등 다양 함). 자동으로, 쉽고, 무료로이 작업을 수행 할 수 있습니까?자동으로 C# 클래스를 생성합니다.

"Foo", "int", "apples", "bool", "banana", "Bar"및 "clementine"매개 변수를 제공하고 나머지 코드를 생성해야합니다.

public class Foo 
{ 
    public Foo(int apples, bool banana, Bar clementine) 
    { 
     m_Apples = apples; 
     m_Banana = banana; 
     m_Clementine = clementine; 
    } 

    public int Apples 
    { 
     get { return m_Apples; } 
     set { m_Apples = value; } 
    } 

    public bool Banana 
    { 
     get { return m_Banana; } 
     set { m_Banana = value; } 
    } 

    public Bar Clementine 
    { 
     get { return m_Clementine; } 
     set { m_Clementine = value; } 
    } 

    private int m_Apples; 
    private bool m_Banana; 
    private Bar m_Clementine; 
} 

답변

3

C# 3.5로 업그레이드하면 수행해야 할 작업을 줄일 수 있습니다. 당신은 여전히 ​​생성자를 가질 수 있지만, 민간 모든 필드를 추가 할 필요가 없습니다,

public class Foo 
{ 
    public int Apples { get; set; } 
    public bool Banana { get; set; } 
    public Bar Clementine { get; set; } 
} 

var myFoo = new Foo { Apples = 1, Banana = true, Clementine = new Bar() }; 

을 또는 :

예를 들어, 당신은이 작업을 수행 할 수 있습니다. 이것은 코드 snippits이나 resharper로 타이핑하는 것이 빠르며 빠릅니다. 단점은 이와 같이, 코드를 입력하지 않고도 매개 변수 입력을 검증 할 수 없다는 것입니다. 그것은 가지가 사과하는 int 명시 적으로 제공하는 예를 들어 단지 0

5

을 살펴보십시오. 그것은 VS2005 이후에 포함되어 있습니다.

1

당신은 너무 자동 속성을 사용할 수 있습니다 : 적어도 당신에게 타이핑을 절약 할 수

public Bar Clementine 
    { 
     get; 
     set; 
    } 

합니다.

또한 resharper를 구입해야합니다. 나는 당신이 무료라고 말했지만, 일단 당신이 얼마나 많은 시간을 절약하는지 깨닫게되면 기본적으로 무료입니다.

1

System.CodeDom의 클래스를 사용하여이 작업을 수행 할 수 있습니다. 예제는 CodeDomProvider 도움말을 참조하십시오. 유형 라이브러리에 정의 된 IDL enum을 기반으로 flags 속성을 사용하여 관리되는 enum을 작성하는 데 사용했습니다.

2

prop, ctor, propdp, prope과 같이 코드를 매우 쉽게 생성 할 수있는 C# 코드 조각을 사용할 수도 있습니다. 어쨌든 여기에 목록이 있는데 도움이 될 것입니다.

C# Snippets

+0

스 니펫을 사용하면 다양한 회원 수를 사용할 수 있습니까? 때로는 3 명의 멤버가 필요할 수도 있지만 다른 경우에는 2, 4 또는 6이 필요할 수도 있습니다. –

+0

C# 2.0을 사용하는 경우 prop 단편은 속성과 해당 멤버를 추가합니다. private string _member; public string Member {get {return _member; } 세트 {_ 멤버 = 값; }} – Carlo

+0

가변 개수의 스 니펫을 사용하여 가변 개수의 구성원을 가질 수 있습니다. –

1

XSD를 도구를 사용하면이 작업을 수행 할 수 있습니다. 객체를 나타내는 스키마를 작성하면 XSD는 해당 클래스를 생성합니다.

0

보다는 설정되어 있는지 당신의 클래스를 소모하고 얼마나 중요합니다 사람에 따라, 기능적으로 동등 할 것이다 다음

public class Foo { 
    public int Apples; 
    public bool Banana; 
    public Bar Clementine; 
} 

new Foo { Apples = 1, Banana = false, Clementine = new Bar() }; 

해결하려는 문제를 모른 채 더 나은 대안을 제안하는 것은 어렵습니다. 어떤 종류의 물건입니까? 메시지? 데이터 파일의 런타임 표현?

튜플 또는 원시 배열과 같은 다른 표현을 고려할 수 있습니다.

+0

기능적으로 동일하지 않다는 느낌이 들었습니다.내 클래스의 인스턴스를 속성 표에 전달하면 표에 3 개의 속성이 표시되지만 클래스의 인스턴스를 속성 표에 전달하면 속성 및 공개 입력란이 표시되지 않으므로 속성이 표시되지 않습니다. 같은 ... 나는 생각한다. –

관련 문제