我希望在log4net消息中包含调用堆栈(例如,调用我的方法).有这样做的标准方法吗?
(我知道这会很慢,但我只需要做一些错误)
要使用任意编码加载XML文件,我有以下代码:
Encoding encoding;
using (var reader = new XmlTextReader(filepath))
{
reader.MoveToContent();
encoding = reader.Encoding;
}
var settings = new XmlReaderSettings { NameTable = new NameTable() };
var xmlns = new XmlNamespaceManager(settings.NameTable);
var context = new XmlParserContext(null, xmlns, "", XmlSpace.Default,
encoding);
using (var reader = XmlReader.Create(filepath, settings, context))
{
return XElement.Load(reader);
}
Run Code Online (Sandbox Code Playgroud)
这有效,但打开文件两次似乎有点低效.是否有更好的方法来检测编码,以便我可以这样做:
1. Open file
2. Detect encoding
3. Read XML into an XElement
4. Close file
Run Code Online (Sandbox Code Playgroud) 我在Microsoft SQL Server 2005中的存储过程中编写了三个select语句.两个select语句都返回多个记录,select语句的表列表不同.一个选择来自主表的记录,另一个来自子表.在C#代码中,我想获取所有这些记录并将所有数据放在一个对象中.我正在使用SqlDataReader.有可能用它或我应该做别的事情.
该文档指出Autofac支持开放式泛型,我能够在如下基本情况下注册和解决:
注册:
builder.RegisterGeneric(typeof(PassThroughFlattener<>))
.As(typeof(IFlattener<>))
.ContainerScoped();
Run Code Online (Sandbox Code Playgroud)
解决:
var flattener = _container.Resolve<IFlattener<Address>>();
Run Code Online (Sandbox Code Playgroud)
上面的代码工作得很好.但是,假设我不知道在运行之前提供给IFlattener的类型,我想做这样的事情:
object input = new Address();
var flattener = (IFlattener)_container.Resolve(typeof(IFlattener<>), new TypedParameter(typeof(IFlattener<>), input.GetType()));
Run Code Online (Sandbox Code Playgroud)
这可以用AutoFac吗?我从使用StructureMap获得了以下想法:
http://structuremap.sourceforge.net/Generics.htm
我正在努力实现本文中概述的相同目标.
我想将我的游戏网格划分为一个矩形阵列.每个矩形为40x40,每列有14个矩形,总共25列.这涵盖了560x1000的游戏区域.
这是我设置的代码,用于在游戏网格上创建第一列矩形:
Rectangle[] gameTiles = new Rectangle[15];
for (int i = 0; i <= 15; i++)
{
gameTiles[i] = new Rectangle(0, i * 40, 40, 40);
}
Run Code Online (Sandbox Code Playgroud)
我很确定这是有效的,但当然我无法确认它,因为矩形不会在屏幕上呈现让我亲眼看到它们.我想为调试目的做的是渲染边框,或用颜色填充矩形,这样我就可以在游戏本身上看到它,只是为了确保它有效.
有没有办法让这种情况发生?或者任何相对简单的方法我可以确保这个有效吗?
非常感谢你.
在我在WSS中的自定义aspx页面中,我使用带有xsl文件的DataFormWebPart来呈现一些数据.为了将值传递给xsl,我使用参数绑定.具体来说,我需要传递服务器主机URL,如下所示:
<ParameterBinding
Name="HttpHost"
Location="CAMLVariable"
DefaultValue="http://hardcoded.com" />
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我要做的下一件事是动态获取主机名.因此,弄清楚如何从SharePoint获取它我添加了以下绑定:
<ParameterBinding
Name="HttpHost"
Location="CAMLVariable"
DefaultValue='<%# SPContext.Current.Site.Url.Replace
(SPContext.Current.Site.ServerRelativeUrl, "") %>' />
Run Code Online (Sandbox Code Playgroud)
现在来问题了.如果在页面中使用其他位置,代码将按预期工作,但使用上述代码SharePoint报告:
Web部件错误:'WebPartPages:DataFormWebPart'的'ParameterBindings'属性不允许子对象.
有人对此有所了解吗?
更新:我已根据本文启用了服务器端代码
我有一组绑定到数据的控件,我想在程序上为绑定添加验证器.目前,我能够遍历可视树以找到带有绑定的控件,并将我的验证器添加到这些控件中.但是为了进一步指定哪些控件应该具有特定的验证,我想使用样式.所以我的XAML看起来像这样:
<TextBox Name="someTextBox" Style="{StaticResource optionalNumericTextBox}" />
Run Code Online (Sandbox Code Playgroud)
这里,optionalNumericTextBox样式既可以添加验证错误模板,也可以作为装饰器来指示此文本框应该应用可选的数字验证器.
当我遍历可视树,发现带有绑定的控件,然后需要确定使用的样式时,会出现问题.目前我已经尝试过了
dependencyObject.GetValue(FrameworkElement.StyleProperty)
Run Code Online (Sandbox Code Playgroud)
这给了我一个Style对象,但据我所知,这个对象没有携带'optionalNumericTextBox'值.甚至可以确定密钥,还是XAML阅读器中丢失了这些信息?
如果编写自己的静态代码分析规则(对于C#代码),使用StyleCop和FxCop有什么优缺点?
某种类型的分析比另一种更适合吗?或者是两个在源代码上运行而另一个在编译程序集上运行的区别?
是否可以使用lambda(C#)编写下面的内容
private static void GetRecordList(List<CustomerInfo> lstCustinfo)
{
for (int i = 1; i <= 5; i++)
{
if (i % 2 == 0)
lstCustinfo.Add(new CustomerInfo { CountryCode = "USA", CustomerAddress = "US Address" + i.ToString(), CustomerName = "US Customer Name" + i.ToString(), ForeignAmount = i * 50 });
else
lstCustinfo.Add(new CustomerInfo { CountryCode = "UK", CustomerAddress = "UK Address" + i.ToString(), CustomerName = "UK Customer Name" + i.ToString(), ForeignAmount = i * 80 });
}
}
Run Code Online (Sandbox Code Playgroud) 我正在写一本字典应用程序,需要在打字时做通常的单词建议.
LIKE somestring% 相当慢(在~100k行表上约1300ms)所以我转向FTS3.
问题是,我还没有找到一种从字符串开头搜索的理智方式.
现在我正在执行一个类似的查询
SELECT word, offsets(entries) FROM entries WHERE word MATCH '"chicken *"';
Run Code Online (Sandbox Code Playgroud)
,然后在代码中解析偏移字符串.
还有更好的选择吗?