我正在研究一些在其业务和数据层中使用模式的代码,这些代码使用事件来发出错误信号,例如
resource = AllocateLotsOfMemory();
if (SomeCondition())
{
OnOddError(new OddErrorEventArgs(resource.StatusProperty));
resource.FreeLotsOfMemory();
return;
}
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,特别是当调用它的代码需要挂钩事件时(有四个或五个不同的!).
开发人员告诉我,这样他们就可以在错误处理代码中引用已分配资源的属性,并且在此层保留错误之后清理的责任.
这有点儿意义.
替代方案可能是这样的
resource = AllocateLotsOfMemory();
if (SomeCondition())
{
BigObject temporary = resource.StatusProperty;
resource.FreeLotsOfMemory();
throw new OddException(temporary);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
当BigObject
释放异常对象时释放此" ",我们是否需要这种模式?
有没有其他人体验过这种模式?如果是这样,你发现了什么陷阱?有什么优势?
谢谢!
这里有一些不编译的C#代码,给出以下消息:
无法从'out T'转换为'out Component'
public void Get<T>(out T c) where T : Component
{
m_components.TryGetValue(typeof(T), out c);
}
Run Code Online (Sandbox Code Playgroud)
这是编译的代码:
public void Get<T>(out T c) where T : Component
{
Component temp;
m_components.TryGetValue(typeof(T), out temp);
c = (T)temp;
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么第一个代码无效,因为"where T:Component"明确指出T是Component类型.
谢谢
.NET System.Security.Cryptography
命名空间有一个相当令人困惑的算法集合,我可以用它来加密信用卡详细信息.哪个最好?
对于相对较短的字符串,它显然需要是安全的.
编辑:我在英国,我知道我们可以存储加密的信用卡详细信息,只要从不存储三位数的CVV号码.并感谢所有人的回应.
我正在使用Visual Studio 2010在具有".sql"扩展名的文件中编辑MySQL数据库的DDL.IDE坚持在完全合法的MySQL语法下提供红色波形,大概是因为它不是合法的SQL Server语法.
是否可以禁用.SQL文件的语法突出显示?
或者,更好的是,MySQL IntelliSense突出显示是否可用?
我正在构建一个需要地图的C#/ Winforms应用程序(谷歌地图,Bing地图等).但我对ToU(许可证) - 非商业用途等非常困惑.
我的问题:
为了商业目的,您会建议(最好是免费)嵌入winforms应用程序的映射提供程序.
如果应用程序处于"离线"状态,即无法从映射服务器获取切片,您会建议使用哪种映射提供程序.
在我阅读ToU中的非商业用途条款之前,谷歌地球似乎很有希望,你知道通过购买许可证是否可以豁免吗?任何商业替代品?
这是我的c#单元测试设计问题:
我有一个测试,我想在一些修改文件的代码上运行.我的测试将运行修改文件的代码,然后检查结果.到目前为止非常直接......
问题是,我有大约10个文件(很快就会更多)我想要运行相同的单元测试.当测试本身真的相同时,我不想为每个文件编写一个新的单元测试.
我可以编写一个查询文件夹中文件的测试,然后在每个文件上运行测试逻辑,但使用此方法只会报告整个文件集的一个通过/失败结果.
我喜欢创建某种动态系统,其中我放置在特定文件夹中的每个文件都通过相同的单元测试运行.因此,如果文件夹中有25个文件,则测试运行25次,单元测试结果报告运行了25个测试,并且每个测试都包含单独的通过/失败.
任何想法如何或如果这可以在ac#单元测试中完成?或者用nunit测试?
谢谢!我希望这不是一个重复的问题.我环顾四周,但找不到任何东西.
我可以像在.dbml中一样在我的.edmx文件中添加SQL函数吗?如果可以的话,怎么做?如果我不能,是否有任何解决方法?
我试图谷歌,但没有找到任何具体的答案,如何做到这一点.
基于给定的答案,我创建了一个存储过程,并尝试添加"导入函数",但它表示"存储过程不返回任何列".我哪里做错了?功能:
ALTER FUNCTION [dbo].[fn_locationSearch](@keyword varchar(10))
RETURNS TABLE
AS
RETURN
(
SELECT CustomerBranch.ID,CustomerBranch.BranchName,CustomerBranch.Longitude,CustomerBranch.Latitue,CustomerBranch.Telephone,CustomerBranch.CategoryID,CustomerBranch.Description
FROM FREETEXTTABLE (CustomerOffer,*,@keyword) abc INNER JOIN OffersInBranch
ON abc.[key]=OffersInBranch.OfferID INNER JOIN CustomerBranch ON OffersInBranch.BranchID=CustomerBranch.ID
UNION
SELECT CustomerBranch.ID,CustomerBranch.BranchName,CustomerBranch.Longitude,CustomerBranch.Latitude,CustomerBranch.Telephone,CustomerBranch.CategoryID,CustomerBranch.Description
FROM CustomerBranch WHERE FREETEXT(*,@keyword)
)
Run Code Online (Sandbox Code Playgroud)
存储过程:
ALTER PROCEDURE USP_locationSearch
(@keyword varchar(10))
AS
BEGIN
SELECT * from dbo.fn_locationSearch(@keyword)
END
Run Code Online (Sandbox Code Playgroud) 我有一个(相当大的)Azure应用程序,它将(相当大的)文件并行上传到Azure blob存储.
在几个百分点的上传中,我得到一个例外:
The specified block list is invalid.
System.Net.WebException: The remote server returned an error: (400) Bad Request.
这是当我们运行一个相当无害的代码来将Blob并行上传到Azure存储时:
public static void UploadBlobBlocksInParallel(this CloudBlockBlob blob, FileInfo file)
{
blob.DeleteIfExists();
blob.Properties.ContentType = file.GetContentType();
blob.Metadata["Extension"] = file.Extension;
byte[] data = File.ReadAllBytes(file.FullName);
int numberOfBlocks = (data.Length / BlockLength) + 1;
string[] blockIds = new string[numberOfBlocks];
Parallel.For(
0,
numberOfBlocks,
x =>
{
string blockId = Convert.ToBase64String(Guid.NewGuid().ToByteArray());
int currentLength = Math.Min(BlockLength, data.Length - (x * BlockLength));
using (var memStream = new MemoryStream(data, x * …
Run Code Online (Sandbox Code Playgroud) 我想移动一个当前使用标准ASP.NET成员资格提供程序的站点,以通过Windows Identity Foundation和Azure ACS使用基于声明的身份验证.
我们将使用OAuth 2.0安全的REST服务来展示该网站,因此这似乎是一个明智的方法.我们还需要将我们的身份验证与外部第三方ADFS和其他系统联合起来,这正是ACS解决的问题.
但是,我还希望保留现有用户使用其现有凭据的能力.
为此,我认为我需要一个与ASP.NET成员资格提供程序一起使用的自定义STS.
所有文献(例如Bertocci的"编程Windows身份基础")都表明编写自定义STS是一个坏主意.并且,我同意 - 我真的不喜欢编写自己的安全代码.
那么 - 是否有可以使用会员提供商数据的STS?
c# ×5
.net ×3
security ×2
acs ×1
asp.net ×1
azure ×1
bing-maps ×1
blobstorage ×1
coroutine ×1
cryptography ×1
encryption ×1
events ×1
exception ×1
fiber ×1
google-earth ×1
google-maps ×1
intellisense ×1
linq ×1
mysql ×1
nunit ×1
sql-server ×1
unit-testing ×1
wif ×1
winforms ×1
yield ×1