如果我有以下情况:
StreamWriter MySW = null;
try
{
Stream MyStream = new FileStream("asdf.txt");
MySW = new StreamWriter(MyStream);
MySW.Write("blah");
}
finally
{
if (MySW != null)
{
MySW.Flush();
MySW.Close();
MySW.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
MySW.Dispose()
即使提供了,我可以打电话并跳过关闭吗?是否存在任何不能按预期工作的Stream implament(如CryptoStream)?
如果没有,那么以下只是错误的代码:
using (StreamWriter MySW = new StreamWriter(MyStream))
{
MySW.Write("Blah");
}
Run Code Online (Sandbox Code Playgroud) 我在我的数据层(基于实体框架)中使用DbProviderFactories并使用SQLite作为我的数据库,但我没有App.Config来拥有以下代码:
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>
Run Code Online (Sandbox Code Playgroud)
相反,我想让我的数据层以编程方式放入.有人知道这样做的方法吗?
编辑:
这样做的原因是我使用IoC容器来选择数据层,而我的一些数据层不需要App.Config值,或者让它们与数据层紧密相连.
如果我有两个进程访问给定的注册表项(例如HKLM
),我应该将逻辑包装在互斥锁中吗?
我有一个.NET Compact Framework 3.5程序,用作"偶尔连接"的业务线(LOB)应用程序.如果它可以看到在线Web服务,它将使用它进行数据访问,但如果网络连接丢失,它将使用本地缓存.
处理所有连接选项和状态更改的最佳方法是什么?
你如何理解WiFi,Cradle和GPRS之间的区别并使用最好的方法?
有人对此有任何指导吗?
我在使用参数时让Guids在SQLite(0.4.8)中匹配时遇到问题,当我使用类似的东西userGuid = 'guid here'
工作时,但userGuid = @GuidHere
事实并非如此.有人有主意吗?
创建:
CREATE TABLE Users
(
UserGuid TEXT PRIMARY KEY NOT NULL,
FirstName TEXT,
LastName TEXT
)
Run Code Online (Sandbox Code Playgroud)
样本数据:
INSERT INTO Users (UserGuid, FirstName, LastName)
VALUES ('e7bf9773-8231-44af-8d53-e624f0433943', 'Bobby', 'Bobston')
Run Code Online (Sandbox Code Playgroud)
删除声明(工作):
DELETE FROM Users WHERE UserGuid = 'e7bf9773-8231-44af-8d53-e624f0433943'
Run Code Online (Sandbox Code Playgroud)
删除声明(不工作):
DELETE FROM Users WHERE UserGuid = @UserGuid
Run Code Online (Sandbox Code Playgroud)
这是一个显示我的问题的C#程序:
using System;
using System.Data.SQLite;
namespace SQLite_Sample_App
{
class Program
{
static void Main(string[] args)
{
Do();
Console.Read();
}
static void Do()
{
using(SQLiteConnection MyConnection = new …
Run Code Online (Sandbox Code Playgroud) 任何人都有一个很好的方法将C#中的Exception输出到一个处理内部异常的字符串,等等?我相信每个开发者都对此有自己的意见,但我找不到我的旧版本,并想看看那里有哪些更好的.
这里有一个没有内部异常递归的例子:
var Message = String.Format("Exception Message: \n{0}\n\nStackTrace: \n{1}", ex.Message, ex.StackTrace);
Run Code Online (Sandbox Code Playgroud) 好的,我有Grid
一个网页浏览器的"自动尺寸".在那里,我有一个Canvas
绘制形状的形状.我想要的是画布'拉伸'来填充页面.我尝试使用Viewbox
Silverlight 3 10/09 Toolkit中的一个,但它似乎没有填满网格中的所有空间,只有当我给它一个精确的像素数时才有效.
有没有人有任何想法?
示例XAML:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<toolkit:Viewbox Stretch="Fill">
<Canvas Width="617.589" Height="876.934">
<Polygon StrokeThickness="3.0" Stroke="#ff000000" Fill="White" StrokeMiterLimit="1.0" Points=" 395.320,604.854 395.320,604.854 335.696,600.207 311.449,600.365 287.188,600.504 221.110,604.854 221.110,604.854 221.110,345.832 221.110,345.832 278.372,350.370 309.237,350.320 340.106,350.279 395.320,345.832 395.320,345.832 395.320,604.854 " />
<Polygon StrokeThickness="3.0" Stroke="#ff000000" Fill="White" StrokeMiterLimit="1.0" Points=" 420.576,870.950 420.576,870.950 348.925,875.434 308.134,875.434 267.351,875.434 197.958,870.950 197.958,870.950 189.140,693.696 189.140,693.696 249.707,698.225 308.134,698.182 366.562,698.135 429.401,693.696 429.401,693.696 420.576,870.950 " />
</Canvas>
</toolkit:Viewbox>
</Grid>
Run Code Online (Sandbox Code Playgroud) 我正在测试一些错误处理代码,并试图确保我的应用程序和数据始终失败到一致状态.我已经验证了代码与"正常"注入错误的方式一起工作,但我想更进一步.
杀死.NET线程最突然的方法是什么,让错误处理的机会最少?
例如,您如何测试CLR约束执行区域的限制?或者我如何模拟像拔插头一样严肃的东西?
我有以下查询:
var MyQuery = from e in ContractContext.Equipments.Include("Manufacturers")
where e.Customers.ID == customer.ID
select e;
Run Code Online (Sandbox Code Playgroud)
一切正常,我得到我的设备,它正确加载制造商表(热切).但是,当我尝试执行以下多对多查询时:
var MyQuery = from e in ContractContext.Equipments.Include("Manufacturers")
where e.Customers.ID == customer.ID
from cce in e.ContractEquipments
where cce.Contracts.EndedOn >= DateTime.Today
select e;
Run Code Online (Sandbox Code Playgroud)
其中"ContractEquipments"是"设备"和"合同"之间的多对多查找,但是当此查询运行时,制造商表不再容易加载.知道如何在不执行以下操作的情况下解决此问题:
if (MyEntity.Manufacturers.IsLoaded == false)
MyEntity.ManufacturersReference.Load()
Run Code Online (Sandbox Code Playgroud)
这个项目需要几个小时执行,我想保持数据库调用的数量.
编辑#1:
我也尝试了这个没有成功:
var MyQuery = from e in ContractContext.Equipments.Include("Manufacturers")
where e.Customers.ID == customer.ID
join cce in ContractContext.ContractEquipments
on e.ID equals cce.Equipments.ID
where cce.Contracts.EndedOn >= DateTime.Today
select e;
Run Code Online (Sandbox Code Playgroud) 我想在.NET应用程序中就地编辑字符串.我知道这StringBuilder
允许我进行就地附加,插入和替换,但它不允许这样做的简单方法:
while (script.IndexOf("@Unique", StringComparison.InvariantCultureIgnoreCase) != -1)
{
int Location = script.IndexOf("@Unique", StringComparison.InvariantCultureIgnoreCase);
script = script.Remove(Location, 7);
script = script.Insert(Location, Guid.NewGuid().ToString());
}
Run Code Online (Sandbox Code Playgroud)
由于没有IndexOf
在StringBuilder
.有没有人有一个有效的方法来进行文本信息的就地编辑?
编辑#1:更改样本以使每个'替换'需要具有不同的结果.
我在Silverlight 3数据网格中做了类似的事情:
for (int x = 0; x < ThisForecast.Periods.Count; x++)
{
var TextColumn = new DataGridTextColumn();
TextColumn.Header = ThisForecast.Periods[x].Name;
TextColumn.Binding = new Binding(String.Format("Periods[{0}].Quantity", x));
TextColumn.Binding.Mode = BindingMode.TwoWay;
TextColumn.IsReadOnly = false;
dgItemForecast.Columns.Add(TextColumn);
}
Run Code Online (Sandbox Code Playgroud)
并且它工作得很好,但我想将ready更改为更像:TextColumn.IsReadOnly = new Binding(String.Format("Periods [{0}].IsReadOnly",x));
虽然在XAML中似乎很容易做到,但我无法找到在后面的代码中执行此操作的正确方法.显然我无法将其设置为"绑定",但我可以在哪里设置类似的东西?
编辑#1:
我看了BindingOperations.SetBinding()
下面给出的,但找不到DependencyProperty
IsReadOnly.有没有办法注入/添加一个?
我查看了一些其他问题,寻找一个详细的错误页面布局的一个很棒的例子,但没有找到任何东西.我相信很多人以前都做过这件事.
要求*必须显示异常信息(类型,堆栈跟踪)*如果可能,应显示表单值*应显示导致问题的区域/控制器/操作
我想出的最好的是:
@model System.Web.Mvc.HandleErrorInfo
@{ViewBag.Title = "Error";}
<h2>Sorry, an error occurred while processing your request.</h2>
<p>Please copy and paste this entire page in an email to
<a href="mailto:me@me.com?subject=Website%20Error">Me</a>
along with any other information you can provide so we can
get this fixed ASAP!</p>
@if (Model != null) {
<h1>@Model.Exception.GetType().Name<br />
thrown in @Model.ControllerName @Model.ActionName</h1>
<h2>Details</h2>
<div>
@Model.Exception.ToString()
</div>
}
Run Code Online (Sandbox Code Playgroud)