좋아, 그래서 면도기 유형 속성 포인터가 주어진 알 수없는 데이터 클래스에서 데이터를 읽을 수있는 제네릭 메서드를 갖고 싶습니다.unknow 데이터 모델에서 데이터 가져 오기
I.E. 템플릿과 객체가 포함 된 문자열을 전달한 다음 템플릿의 문자열이 지정된 객체에서 데이터를 추출 할 수 있기를 원합니다.
String template = "@Model.Basket";
var results = parse(template, data);
구문 분석 방법은 특정 모델에 대한 지식이 없어야가 전달되고, 그래서 그 방법 서명은 뭔가를해야한다 : 데이터가
public var parse(String template, object model)
public class Receipt
{
public String Firstname { get; set; }
public String Surname { get; set; }
public DateTime TransactionDateTime { get; set; }
public Boolean ReturnCustomer { get; set; }
public LineItem[] Basket { get; set; }
public class LineItem
{
public Product product { get; set; }
public int Units { get; set; }
public class Product
{
public int ProductId { get; set; }
public String ProductName { get; set; }
public double Cost { get; set; }
}
}
}
같은
이 경우 parse는 라인 항목의 배열을 반환해야하지만 템플릿이 "@ Model.Firstname"과 동일한 경우 해당 템플릿에 저장된 이름이 포함 된 문자열을 반환해야합니다 로퍼 티.
누구에게 좋은 아이디어가 있습니까?
이 솔루션의 경우 면도기 엔진이 이해할 수있는 형식이 아닌 템플릿이 있으므로 면도기 엔진을 사용할 수 없습니다.
나는 반사가 유일한 방법일지도 모른다고 생각하고 있었다. 왜 그것이 좋은 생각이 아니라고 생각합니까? – Gineer
문제 도메인을 알지 못해서 좋은 생각이 아닌 것은 확신 할 수 없지만, 복잡한 도메인이 될 가능성이있는 것으로 보입니다. 아마도 T4 템플릿을 조사하면 관리가 더 용이해질 수 있습니다. – podiluska
T4 템플릿을 살펴본 결과 VS에서 템플릿을 만들 때 파일 뒤에 cs 코드가 실제로 생성되므로 템플릿이 VS에서 미리 코드화되기 때문에 작동하지 않습니다. 내 프로젝트에서 사용자는 런타임에 해석하고 채우기를 원하는 모든 응용 프로그램에서 템플릿을 생성 할 수 있어야합니다. – Gineer