2008-09-21 4 views
3

C# 클래스를 클래스 정의가 들어있는 헤더로 분리 한 다음 구현이 들어있는 실제 .cs 파일을 분리 할 수 ​​있습니까? 인터페이스를 생성하여이 작업을 수행 할 수 있다고 생각하지만, 그렇지 않은 것 같습니다. 나는 단지 클래스 디자인을 볼 수있는 파일을 원하지만, 모든 세부 사항은 아닙니다. C++에서 할 수있는 일은 쉽지만 C#에서는 끝내지 않습니다.C# 클래스를 헤더와 .cs 파일로 분리

미리 감사드립니다.

답변

0

IDE가 아닌 이유는 무엇입니까?

EDIT : 그렇지 않으면 유면과 추상 클래스가 길입니다.

2

아니요 C#에서이 작업을 수행 할 방법이 없습니다. VS.NET을 사용하여 수업을 요약하고 (보기 메뉴에서 모두 접기) 또는 인터페이스를 사용할 수 있다고 말하고 싶을 때 사용할 수 있습니다. 뒤에 묻는 이유는 무엇입니까?

0

클래스보기를 사용해보십시오. 각 클래스를 클릭하면 회원이 나열됩니다.

10

동일한 파일에서 Visual Studio 개요 함수를 사용하여 클래스를 축소 할 수 있으므로 메서드 및 속성 이름 만 볼 수 있습니다.

Visual Studio를 사용하여 클래스의 다양한 메서드 및 속성 이름을 제공하는 클래스 뷰를 볼 수도 있습니다.

dotnet의 구현과 별도로 클래스를 정의해야하는 이유는 거의 없습니다.

0

이 IDE는 정확하게 인라인을 보여줍니다 ... 당신은하지만이 작업을 수행 할 것 이유는 확실하지 않다 like

myBadlyNamedObject.

(또는 "클래스 이름."), 그리고 아름다움은 객체로 작업 할 때 당신이 당신의 손가락에 그것을 가지고 무엇을 볼 수있는 개체 정의를 개방하기로 결정하지 않을 때 그것의

23

될 수 있다는 것입니다 잘못된 접근. C#은 C++이 아닙니다. 헤더 파일을 잊어 버림.

클래스 요약을 원하면 개체 브라우저을 Visual Studio에서 열면됩니다. 클래스 내의 모든 메소드의 서명을 제공합니다.

1

C++ 에서처럼 헤더 파일을 만들 수 있다고 생각하지 않습니다. 클래스와 메소드 모두에 대해 partial 키워드를 확인하십시오. 나는 어제 그들에 관해 배웠다. 그래서 나는 정말로 사용하지 않았다. 그러나 당신이하려고하는 것을 성취하도록 도울지도 모른다.

0

내가 아는 한 그럴 수 없습니다. 그러나 클래스의 다른 부분을 다른 파일에 넣는 부분 클래스를 사용하면 좀 더 나은 결과를 얻을 수 있습니다. 예를 들어, 하나의 파일에 모든 공개 메소드를 넣고 다른 객체에서 사용할 수있는 메소드의 개요를보다 쉽게 ​​얻을 수 있도록 모든 공개 메소드를 하나의 파일에 포함 할 수 있습니다.

1

동일한 의도를 이루기 위해 interface을 사용하십시오.

IFoo.cs

public interface IFoo 
{ 
    int DoFoo(); 
} 

Foo.cs

pubic class Foo : IFoo 
{ 
    public int DoFoo() 
    { 
    return 1; 
    } 
} 
+0

저는 투표를 한 사람이 아니지만 한 클래스에서만 구현되는 인터페이스는 피하고 싶습니다. –

0

당신이 정말로, 정말로이 작업을 수행 할 필요가 있다면, 가장 가까운 옵션을 리팩터링 것 -> 추출 인터페이스를 제공합니다.

0

여러분 모두에게 "USE THE IDE ~! ~~"라고 말하면 여러분은 그 요점을 놓치고 있습니다. 코드가 IDE에서 항상 읽히는 것은 아닙니다. 어쩌면 그가 그것을 인쇄하고 싶어 할까? 아니면 이메일로 보내시겠습니까? IDE에서 코드를 읽을 수 있기 때문에 언어 기능을 구현하지 않는 것이 문제입니다. 코드가 IDE에서 항상 읽히지는 않습니다 (또는 작성된 것은 아닙니다).

그렇다면 부분 클래스와 메소드를 사용하여이를 수행 할 수 있습니다. 그러나 두 파일 모두에서 인스턴스 변수를 가질 수 있다고는 생각하지 않습니다.

1

개인적인 방법에 관심이 있다면 인터페이스를 추출하는 것은 좋은 계획이 아닙니다. 추상 클래스를 사용한다는 것은 "보기"요구 사항을 지원하기 위해 응용 프로그램 디자인을 실질적으로 변경한다는 것을 의미합니다 (불필요하게 복잡성이 증가한다고 생각합니다). 부분 수업은 한 곳에서 완벽한 공개 및 사적인 서명을 보여주지 않으므로 이상적이지 않습니다. 당신은 IDE가 없거나 사용하지 않으려는 경우

그래서, (어쨌든이 무료로, 그리고 좋은 장난감) 리플렉터의 기본 분해 작업을 사용합니다 :

http://www.red-gate.com/products/reflector/index.htm

예 : System.Web.Caching.Cache

public sealed class Cache : IEnumerable 
{ 
    // Fields 
    private CacheInternal _cacheInternal; 
    public static readonly DateTime NoAbsoluteExpiration; 
    public static readonly TimeSpan NoSlidingExpiration; 

    // Methods 
    static Cache(); 
    [SecurityPermission(SecurityAction.Demand, Unrestricted=true)] 
    public Cache(); 
    internal Cache(int dummy); 
    public object Add(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback); 
    public object Get(string key); 
    internal object Get(string key, CacheGetOptions getOptions); 
    public IDictionaryEnumerator GetEnumerator(); 
    public void Insert(string key, object value); 
    public void Insert(string key, object value, CacheDependency dependencies); 
    public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration); 
    public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback); 
    public object Remove(string key); 
    internal void SetCacheInternal(CacheInternal cacheInternal); 
    IEnumerator IEnumerable.GetEnumerator(); 

    // Properties 
    public int Count { get; } 
    public long EffectivePercentagePhysicalMemoryLimit { get; } 
    public long EffectivePrivateBytesLimit { get; } 
    public object this[string key] { get; set; } 
} 
1

이것은 고대 컴파일러가 제대로 작동하려면 함수 서명의 전달 선언이 필요했기 때문에 이것은 C++의 기능이었습니다.

만약 당신이 가지고있는 것이 유용 할 것이라면, 여러 번 사용하기를 원한다면 리플렉션을 사용하여 공용 인터페이스를 모든 구성 요소에서 추출한 작은 유틸리티를 작성하여 텍스트 파일로 포맷 할 수 있습니다 네가 원하는 레이아웃으로

또 다른 대안은 /// 구문을 사용하여 클래스에 대한 XML 문서를 만드는 것입니다.

0

WinCV는 .net 어셈블리에 대한 헤더보기를 제공하는 .net 1.0 framework sdk 유틸리티입니다. .net 2.0에 대해 구성하는 방법에 대해 wincv.exe를 검색하십시오.

0

항상 부분 클래스를 사용할 수 있습니다.

관련 문제