2014-12-29 7 views
0

두 MVC 사이트간에 MVC 뷰를 공유하기 위해 RazorGenerator를 사용할 시나리오를 검토 중이며 컨트롤러의 부분 구현을 다른 어셈블리에 넣고 T4MVC를 사용할 수 있는지 궁금합니다. 다른 어셈블리에 정의 된 메소드를 선택하십시오.T4MVC를 구성하여 다른 어셈블리에 정의 된 메서드를 찾을 수 있습니까?

그래서, 예를 들어,이 같은 :

MVC 라이브러리/HomeController.cs

namespace SharedNameSpace ... 
public partial class HomeController 
{ 
    public virtual ActionResult SomeSharedAction() { return View(); } 
} 

MVC PROJECTA/HomeController.cs-PROJECTA이 참조가에 "MVC 라이브러리" 프로젝트

namespace SharedNameSpace ... 
public partial class HomeController 
{ 
    public virtual ActionResult IndexA() 
    { 
     return Partial(MVC.Home.SomeSharedAction(), new { }); 
    } 
} 

.tt 파일을보고 T4MVC에서 메서드를 검색하는 방법을 결정했지만이 문제를 식별하는 데 어려움이있었습니다. 여기 내가 찾은 관련 코드의 일부입니다 :

foreach (CodeFunction2 method in GetMethods(type)) 
{ 
    ... 
    controllerInfo.ActionMethods.Add(new ActionMethodInfo(method, current)); 
} 

static IEnumerable<CodeFunction2> GetMethods(CodeClass2 codeClass) 
{ 
    // Only look at regular method (e.g. ignore things like contructors) 
    return codeClass.Members.OfType<CodeFunction2>() 
     .Where(f => f.FunctionKind == vsCMFunction.vsCMFunctionFunction); 
} 

...하지만 나는 그것의 Members가 결정되는 방법을 결정하는 CodeClass2의 정의를 찾을 수 없습니다. (CodeClass2은 일반적인 형식입니까?) 참조 된 어셈블리에 정의 된 부분 클래스의 메서드를 찾기 위해이 방법을 변경할 수 있습니까? T4가 리플렉션의 모든 기능에 액세스 할 수 있는지 여부는 확실하지 않습니다.

편집 : CodeClass2에 대한 자세한 정보를 발견했습니다. 분명히 이름 때문에 예상치 못한 MS 유형입니다. MSDN에서 latest documentation for vs2008을 표시하지만

+0

이 사람이이 질문과 같은 일을 요청하는 경우 잘 모르겠어요,하지만 난 관련 보인다이 링크를 발견 https://t4mvc.codeplex.com/discussions/570079 – DLeh

답변

0

내 가정이 잘못되어 어셈블리 전체에 선언 된 부분 클래스를 가질 수 없다는 점을 깨달았 기 때문에 다른 이유로는 원하는 효과를 얻을 수 없습니다.

참조 : https://stackoverflow.com/a/309944/526704