Tôi chắc chắn đây là một yêu cầu rất lạ, nhưng ở đây đi.Làm cách nào để tạo một lớp C# có thể tải xuống từ bên trong trang web ASP.NET MVC?
Chúng tôi có một số mã cấu hình khách hàng được đại diện bởi các lớp C# mà chúng tôi biên dịch thành một thư viện lớp. Tạo các lớp cấu hình này hiện là công việc của khỉ mà tôi muốn gán cho một người nào đó không phải là một nhà phát triển. Do đó, chúng tôi xây dựng trang web "Trình cấu hình" mà nhà phân tích nghiệp vụ có thể sử dụng để tạo các lớp C# hợp lệ bằng cách điền vào biểu mẫu với các tùy chọn có liên quan được chọn.
Cách tốt nhất để tạo lớp C# từ mẫu trong trang web MVC là gì? Lưu ý rằng tôi không nói ở đây về việc tạo động và thực thi một lớp khi chạy: chúng tôi chủ yếu tạo ra một tệp văn bản chỉ chứa mã C# sẽ được đưa vào một dự án hoàn toàn khác.
Điều này chứng tỏ là một chủ đề rất khó khăn đối với google đúng cách! Tùy chọn mà đã đưa ra cho đến nay ...
- chỉ cần sử dụng một file văn bản tokenized và thay thế các giá trị sử dụng String.Format
- bằng cách nào đó sử dụng Razor như một công cụ khuôn mẫu (nhưng không chắc chắn như thế nào, và nó không phải html chúng tôi 'tạo lại)
- bằng cách nào đó sử dụng các mẫu T4 (ít nhất tôi biết nó được sử dụng để tạo ra C#, nhưng không chắc chắn làm thế nào để thực hiện trong thời gian chạy)
Bất kỳ ý tưởng về cách tốt nhất để tiếp cận này?
Theo yêu cầu, đây là ví dụ về lớp/tệp đầu ra. Giá trị ở đây ghi đè các giá trị được đặt trong lớp cơ sở có nhãn, xác thực của khách hàng cụ thể, v.v. Đây là cách chúng tôi tùy chỉnh sản phẩm của mình cho khách hàng.
public class AreaRiskTemplate: AreaRiskTemplateBase
{
public override string EntityName { get { return "risk"; } }
public override string EntityNamePlural { get { return "risks"; } }
public override string EntityNameArticle { get { return "a"; } }
public override string CGovItemRefPrefix { get { return "R"; } }
public override void SetFieldDefinitions()
{
FieldDefinitions.Level1.IsImplemented = true;
FieldDefinitions.Level1.Label = "Category";
FieldDefinitions.Level1.IsVisibleInGrid = true;
FieldDefinitions.Level2.IsImplemented = true;
FieldDefinitions.Level2.Label = "Team";
FieldDefinitions.Level2.IsVisibleInGrid = true;
FieldDefinitions.Description.IsImplemented = true;
FieldDefinitions.Description.Label = "Description";
FieldDefinitions.Description.IsVisibleInGrid = true;
}
public override ModelStateDictionary Validate()
{
var msd = new ModelStateDictionary();
// add template-specific validation here
msd.Merge(base.Validate());
return msd;
}
public override List<string> Level1Options
{
get
{
return new List<string>
{
"Organisational",
"Financial",
"Operational",
"External",
"IT"
};
}
}
}
Cập nhật: hiện đang điều tra mẫu T4 tại http://msdn.microsoft.com/en-us/library/ee844259(v=vs.100).aspx (nhờ nhận xét bên dưới). Trông đầy hứa hẹn.
http://msdn.microsoft.com/en-us/library/bb126445.aspx dường như bao gồm chi tiết về việc bắt đầu với T4 khi chạy. –
Điều này cũng có thể quan tâm: http://code.msdn.microsoft.com/windowsdesktop/Single-File-Generator-94d856d4 – Magrangs
Bạn có thể đăng một ví dụ về tệp cấu hình này như thế nào không? –