2009-09-11 3 views
1

먼저, 새로운 '동적'키워드 n C# 4.0에 대해 언급하지 않습니다. :) 다른 방향으로 갈 필요가 있다고 생각합니다.런타임시 C# 동적 클래스?

XML 파일 또는 파일/폴더 조합 등에서 생성되는 코드/디자인 타임에 클래스를 원합니다. extern 소스를 변경하면됩니다.

C#으로 가능합니까? 일부 숨겨진 클래스 이름이나 무언가 (예 : 각 프로젝트의 기본 제공 속성)에 대한 디자인 타임을 준수하는 것이 가능하다는 것을 알고 있습니다.

더 쉬운 방법이 있나요? 동적 열거 형과 거의 비슷합니까? 여기에 내가 뭘하려고 오전입니다 :

public static class MenuItems 
{ 
} 

그리고 디자인 타임에

, 나는 (즉, 쉽게 경우, 또는 방법/필드)의 속성을 원하는 XML 파일 정의를 기반으로했다. 마찬가지로 :

다음
<MenuItems> 
    <Item>Homepage</Item> 
    <Item>Portfolio</Item> 
    <Item>About</Item> 
    <Item>Contact</Item> 
</MenuItem> 

, 내가 좋아하는 인텔리 것 디자이너에서 코딩 동안 : 속성이 XML로 정의하고, 디자인 타임에 클래스에 추가 된 방법

if (page.ToString == MenuItems.Homepage)... 
if (page.ToString == MenuItems.Portfolio)... 

공지를?

미리 감사드립니다.

+0

'partial' 클래스가 도움이 될 수 있습니다. –

+0

리소스 파일에 대해 C# 코드가 비슷한 환경을 찾고 있습니까? –

+0

@nader : 예, 거의 정확하게 그 경험! Resource에 새 항목을 생성하면 ResourceManager.MyResourceName을 사용하여 디자인 타임에 사용할 수 있습니다. 예! – eduncan911

답변

3

T4 Templates을 사용하여 소스 코드를 생성 할 수 있습니다. Microsoft에서 잘 지원하며 ASP.NET MVC 및 곧 ADO.NET Entity Framework 등 여러 프로젝트에서 사용됩니다.

+0

우수한 점. 그러나 T4 템플릿은 소스 코드를 생성해야합니다. 나는 역동적 인 해결책을 찾고있다. 거의 실시간으로 변경 사항이 적용됩니다. – eduncan911

+0

지금 답변으로 표시하십시오. C#에서 너무 많은 것을 원해요.:) – eduncan911

+0

클래스가 런타임에 완전히 생성되게하려면 나머지 클래스 (해당 클래스의 멤버를 참조하는)가 컴파일 될 예정입니까? 또는 IDE가 IntelliSense 팁을 표시하는 데 필요한 정보를 어디에서 얻을 수 있습니까? –

1

ASP.NET Membership ProviderWeb.sitemap으로주의를 환기시킬 수 있다면 실제 문제에 도움이 될 수 있습니다.

+0

오른쪽. 그것들은 디자인 타임 속성을 생성합니다. 나는 이미 다리 작업을 한 사람을 찾고 있습니다. :) 며칠 내 자신의 솔루션을 고치는 일을하지 못했습니다 ... :) – eduncan911

+0

하지만 정확히 무엇을하려고합니까? 역할에 따라 관련 링크를 숨기거나 표시하고 역할에 따라 액세스를 차단하려고한다고 가정합니다. 내가 링크 한 것은 그렇게한다. 이름을 기반으로 한 스타일링 만보고 있다면 페이지 단위로 또는 이와 유사한 방식으로 작업하십시오. 당신은 실제로 무엇을하려고합니까? –

+0

본인의 원래 질문에서 "역할"또는 회원 자격을 얻는 위치가 확실하지 않습니다. :) 런타임에 config 파일을 기반으로 동적 클래스를 만들 것을 요청하고 있습니다. Matt이 언급 한 T4 Templates는 그것을 수행합니다. 그러나, 미리 코드를 생성하도록 컴파일해야합니다. 거의 실시간으로 뭔가를 찾고 있습니다. 즉, XML 파일에 대한 의존성이 있으며 XML이 변경되면 새로운 클래스 버전이 생성됩니다. – eduncan911

관련 문제