小编gor*_*igh的帖子

如何在.NET中从异常堆栈跟踪中隐藏当前方法?

我想知道是否有办法从方法内部抛出异常,但是不在异常堆栈跟踪中包含该方法.例如

void ThrowSomeException()
{
    throw new SomeException();
}
Run Code Online (Sandbox Code Playgroud)

然后,如果我从一个名为Foo()I 的方法调用该方法,我希望异常堆栈跟踪开始at Foo(),而不是at ThrowSomeException().我假设如果可能的话,可能是通过在方法上使用属性.

我感兴趣的是最普遍的回答,但如果这是不可能的,我真正要做的是创建一个扩展方法AssertEqual()IEnumerable,我会在NUnit的测试使用.所以当我调用myEnumerable.AssertEqual(otherEnumerable)它失败时,NUnit应该在测试方法内报告错误,而不是在扩展方法内.

谢谢!

.net c# exception

32
推荐指数
4
解决办法
8642
查看次数

P /调用Mono上动态加载的库

我正在编写一个使用一些非托管代码的跨平台.NET库.在我的类的静态构造函数中,检测平台并从嵌入式资源中提取适当的非托管库并保存到临时目录,类似于另一个stackoverflow应答中给出的代码.

因此,当它不在PATH中时可以找到它,我在将它保存到临时文件后显式加载它.在Windows上,这可以LoadLibrary从kernel32.dll 正常工作.我正在尝试dlopen在Linux上做同样的事情,但是DllNotFoundException后来在加载P/Invoke方法时我得到了一个.

我已经验证库"libindexfile.so"已成功保存到临时目录并且调用dlopen成功.我钻研了单声道来源,试图弄清楚发生了什么,我想可能归结为是否随后的调用dlopen会重用以前加载的库.(当然假设我通过单声道源头的天真一举得出了正确的结论).

这是我正在尝试做的形状:

// actual function that we're going to p/invoke to
[DllImport("indexfile")]
private static extern IntPtr openIndex(string pathname);

const int RTLD_NOW = 2; // for dlopen's flags
const int RTLD_GLOBAL = 8;

// its okay to have imports for the wrong platforms here
// because nothing will complain until I try to use the
// function
[DllImport("libdl.so")]
static extern IntPtr dlopen(string filename, int …
Run Code Online (Sandbox Code Playgroud)

c# mono pinvoke unmanaged

12
推荐指数
1
解决办法
8043
查看次数

SQL Server:一个查询中存在一行,另一个查询中缺少该行

好的,我想我一定是对SQL查询有些误解.这是一个非常罗嗦的问题,所以感谢花时间阅读它(我的问题在最后,其他一切都只是上下文).

我正在编写一个以复式本金为主的会计系统 - 货币总是在账户之间移动,交易是2 TransactionParts行或更多行减少一个账户并递增另一个账户.

某些TransactionParts行可能被标记为与税收相关,因此系统可以生成增值税销售/购买总额的报告等,因此单个交易可能有两个TransactionParts引用相同的帐户 - 一个增值税相关,另一个不相关.为了简化向用户的呈现,我有一个视图,可以为同一个帐户和事务组合多个行:

create view Accounting.CondensedEntryView as
select p.[Transaction], p.Account, sum(p.Amount) as Amount
    from Accounting.TransactionParts p 
    group by p.[Transaction], p.Account
Run Code Online (Sandbox Code Playgroud)

然后,我有一个计算运行平衡列的视图,如下所示:

create view Accounting.TransactionBalanceView as
with cte as
(
    select ROW_NUMBER() over (order by t.[Date]) AS RowNumber, 
                         t.ID as [Transaction], p.Amount, p.Account
        from Accounting.Transactions t
            inner join Accounting.CondensedEntryView p on p.[Transaction]=t.ID
)
select b.RowNumber, b.[Transaction], a.Account, 
                coalesce(sum(a.Amount), 0) as Balance
    from cte a, cte b
    where a.RowNumber <= b.RowNumber AND …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008

5
推荐指数
1
解决办法
2529
查看次数

标签 统计

c# ×2

.net ×1

exception ×1

mono ×1

pinvoke ×1

sql ×1

sql-server-2008 ×1

unmanaged ×1