我们有一个代码生成器,它可以管理给定数据库的模式,以自动化我们的内部n层架构.输出是各种C#部分类,每个文件一个.
在使用munge所有字符串的代码中,我们尝试尽可能地保持缩进和格式化,但是当你在Visual Studio中打开文件时格式化是错误的.一个快速的ctrl-k,ctrl-d修复了它,但很明显这次重新格式化会在下次生成类时丢失.
我想知道的是,我是否有办法以某种方式自动格式化文本文件的内容,就像Visual Studio一样?
伪代码
Create "code" object, passing text file to constructor
Invoke "format" method
Re-save text file
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢.
编辑: 我应该澄清 - 我希望能够从我的C#代码调用格式,该代码创建包含我生成的C#的文本文件.代码的格式可以标准化(不必是每个开发人员),我不想安装任何第三方应用程序.
我似乎记得在C#中有一个包含用于创建C#的类的命名空间:http://msdn.microsoft.com/en-us/library/system.codedom(VS.80).aspx,但我不确定如果它包含任何可以帮助的类.
进一步编辑: 我的代码生成器是一个通过点击一次安装部署的winforms应用程序.它在内部被许多开发人员使用.我需要一个不需要每个开发人员在他们的机器上安装工具的解决方案.
我现在写了几个自定义模型绑定器,并意识到我已陷入依赖魔术字符串的陷阱,例如:
if (bindingContext.ValueProvider.ContainsPrefix("PaymentKey"))
{
paymentKey = bindingContext.ValueProvider.GetValue("PaymentKey").AttemptedValue;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用表达式强类型化前缀名称,但无法弄清楚如何,并将感谢一些帮助.
谢谢.
我正在寻找从XML源创建高质量 PDF,作为在线相簿创建工具的输出.从手动创建PDF(iText,PdfSharp等)到PrinceXML到xsl-fo工具,有数百种选项可以完成这项任务.以下是我想支持的一些功能:
强制性支持
可选支持
如果有人知道实现这一目标的最佳方式,我将非常感激.此外,如果有人知道其他在线相簿公司(如Blurb或Shutterfly)使用什么来将在线图书转换为可打印的PDF,我会非常有兴趣知道.
如果这是对系统的轻微误用,请原谅我,但我希望StackOverflow用户能够解决同事和我正在进行的辩论.
作为一般规则,我更喜欢将每个单独的功能项封装在UserControl中,即使我知道它只会被使用一次.
我的同事将避免在这种情况下创建UserControl并使用WebForm,认为如果它只使用一次,创建UserControl的重点是什么 - 它只会增加额外的,不必要的开销.
我认为额外的开销可以忽略不计,它会产生更好的组织代码,谁知道,您可以在将来的某个时候重新使用这些功能.
那么谁是对的?
编辑
看起来我可能得到了不少回复 - 我的同事和我同意我们会在一天内计算回复,并为获得最多选票的论点奖励正确答案.
进一步编辑
看起来我是赢家:D
我忽略了一些帖子,这些帖子表明我们都是正确的,并且计算出一个支持每一方的答案为+1,并且每个方面的答案都是+1.我赢了11-6.
在我的基类中,我有一个泛型方法(理想情况下,这将是一个属性,但你不能拥有泛型属性)和一个非泛型属性,两者都具有相同的名称:
protected static T CurrentUserId<T>()
{
...
}
protected static string CurrentUserId
{
get
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
然而,当我来使用它们中的任何一个时,intellisense报告它们之间的歧义.当然,base.CurrentUserId(没有parethesese)为编译器提供了足够的线索,我想调用非泛型属性?
有谁知道编译器为什么要与此斗争?提前致谢.
我有一个视图模型,包含5个类的实例作为子属性.这些子属性使用局部视图呈现,如下所示:
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem1, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem1" } }); %>
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem2, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem2" } }); %>
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem3, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem3" } }); %>
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem4, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem4" } }); %>
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem5, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem5" } }); …Run Code Online (Sandbox Code Playgroud) 我有一个带有一些json的文件,它是由json.net生成的:
[
{
"$type": "Dashboard.Gauges.LabelGaugeSeed, Dashboard",
"Text": "blah",
"LabelColor": {
"X": 1.0,
"Y": 1.0,
"Z": 1.0,
"W": 1.0
},
"Center": {
"X": 0.0,
"Y": 0.0
},
"CharacterWidth": 0.05,
"CharacterHeight": 0.1,
"LineThickness": 0.01,
"TextCentering": 0.5
}
]
Run Code Online (Sandbox Code Playgroud)
在反序列化时,这给了我上面提到的错误.任何人都可以找到这个json的问题?我通过验证器运行它,它说没关系.
它在"中心"之后的空格上出错:如果我更改了Center和LabelColor属性的顺序,那么在"LabelColor"之后它会以相同的方式出错:
这是一个类型的转储:
LabelColor是OpenTK Vector4,Center是OpenTK Vector2,LabelGaugeSeed如下:
public class LabelGaugeSeed : IGaugeSeed
{
public IGauge Grow()
{
return new LabelGauge(this);
}
public string Text;
[JsonConverter(typeof(Vector4Converter))]
public Vector4 LabelColor;
[JsonConverter(typeof(Vector2Converter))]
public Vector2 Center;
public float CharacterWidth;
public float CharacterHeight;
public float LineThickness;
public float TextCentering;
} …Run Code Online (Sandbox Code Playgroud) c# ×3
asp.net ×1
asp.net-mvc ×1
intellisense ×1
json ×1
json.net ×1
magic-string ×1
pdf ×1
validation ×1
webforms ×1
xml ×1