我正在编写一些代码,需要能够从调用类的方法中获取参数的值.我知道如何一直到ParameterInfo []数组,但我不知道如何获取值.这甚至可能吗?
如果是,我认为它与使用MethodInfo对象的MethodBody属性有关,它允许你检查IL流,包括属性,但我不知道怎么做,我还没找到适用于Google的代码.
// Finds calling method from class that called into this one
public class SomeClass
{
public static void FindMethod()
{
for (int i = 1; i < frameCount; i++)
{
var frame = new StackFrame(i);
var methodInfo = frame.GetMethod();
if (methodInfo.DeclaringType != this.GetType())
{
string methodName = frame.GetMethod().Name;
var paramInfos = methodInfo.GetParameters();
// Now what?? How do I get the values from the paramInfos
break;
}
else if (i == frameCount - 1) …Run Code Online (Sandbox Code Playgroud) 我最近买了一台新笔记本电脑.不幸的是,它带有Vista.让它工作是一个很大的麻烦,并且comp有没有XP驱动程序的硬件组件,所以我不能"升级"到实际工作的操作系统.我大部分时间都在努力工作,但是一个特别奇怪的问题令我难过.
我安装了Delphi并尝试构建一个项目.它已编译,但不会运行."此应用程序无法启动,因为找不到sdl.dll." 很公平.所以我抓住SDL.dll并把它放在C:\windows\system32文件夹中.(使用Vista 64位家庭高级版.这是一个32位的dll,所以我把它放在32个文件夹而不是64个.)
再次点击运行.同样的问题.但为什么?它就在哪里,对吗?并且C:\windows\system32在系统路径中.任何人都知道为什么它无法链接到DLL?
(是的,我知道我可以通过将DLL放在与.exe相同的文件夹中来解决这个问题.我目前正在将其作为一种解决方法.但从长远来看,这是一个坏主意,因为我有一些都需要SDL的不同项目.)
我正在尝试编写存储过程,并且根据某个列值,我希望能够更改我选择的表.我试着举个例子:
SELECT ItemNumber,
ItemType,
Description
FROM
CASE ItemType
WHEN 'A' THEN TableA
ELSE TableB
END
WHERE
CASE ItemType
WHEN 'A' THEN ItemNumber = @itemNumber
ELSE PartNumber = @itemNumber
END
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我不仅动态地更改了我选择的表,而且由于这两个表是由两个不同的人在两个不同的时间创建的,因此列名也不同.
所以,我的问题是:实现这一目标的最佳方法是什么,因为SQL Server似乎不喜欢我构建的查询.
如果有人看到我想要做的事情可以建议一个更好的方法来做到这一点,我会全力以赴:-)
是否可以更改<select/>HTML表单中元素的边框颜色?
该border-color样式适用于Firefox,但不适用于IE.
我在谷歌上找不到真正的答案.
我是DDD的新手并且努力理解一些概念.如何在您的域中确定哪些对象是实体对象,哪些是Value对象,以及它们如何区别对待?
我正在开发一些自定义JSP标记.在我,SimpleTag.doTag()我抓住JspContext并打电话getOut()来获得JspWriter.写信时JspWriter,write(String)和之间有什么不同print(String)?我应该拨打一个而不是另一个吗?
我有一个SQL查询,它返回一组行:
SELECT id, name FROM users where group = 2
Run Code Online (Sandbox Code Playgroud)
我还需要包含一个具有递增整数值的列,因此第一行需要在计数器列中为1,第二行为2,第三行为3等
这里显示的查询只是一个简化的例子,实际上查询可能是任意复杂的,有几个连接和嵌套查询.
我知道这可以使用带有自动编号字段的临时表来实现,但有没有办法在查询本身中执行此操作?
我有一个左外连接(下面)按预期返回结果.我需要将"右"表的结果限制为"第一次"命中.我能以某种方式这样做吗?目前,我得到两个表中每个记录的结果,我只想看左边表中的一个结果(项目),无论我在右表(照片)中有多少结果.
var query = from i in db.items
join p in db.photos
on i.id equals p.item_id into tempPhoto
from tp in tempPhoto.DefaultIfEmpty()
orderby i.date descending
select new
{
itemName = i.name,
itemID = i.id,
id = i.id,
photoID = tp.PhotoID.ToString()
};
GridView1.DataSource = query;
GridView1.DataBind();
Run Code Online (Sandbox Code Playgroud) 我正在构建一个应用程序的一部分,该部分围绕从数据库中提取有关事务的信息.由于数据的性质,表中有许多我想要过滤的列.我有一个包含15个字段的过滤器选择框,我希望能够为LINQ语句构建一个where子句.当我想要某些字段为空时,有趣的部分就出现了.例如,我希望能够过滤以下任何一个或全部:
我可以建立一个看起来像的谓词
Func<Transaction, bool> pred = t => t.ResponseCode == ResponseCode && t.TransactionType == TransactionType && t.TransactionAmount > 100.00;
Run Code Online (Sandbox Code Playgroud)
但是为了能够选择在谓词中包含哪些字段,我将谓词连接在一起:
Func<Transaction, bool> pred = t => true;
if(ResponseCode != null)
pred.AndAlso(t => t.ResponseCode == ResponseCode);
// Rinse and repeat
Run Code Online (Sandbox Code Playgroud)
然后将该谓词传递给LINQ语句的where子句.
这完全按我想要的方式工作,但相当复杂.有没有其他方法可以做到这一点?
更新:感谢Justice的评论.我没有使用LINQ to SQL,我在存储库中的对象集合上使用LINQ.您将如何以编程方式构建表达式过滤器?
我有一个文本块,我希望得到它的行而不会丢失最后的\ r和\n.现在,我有以下(次优代码):
string[] lines = tbIn.Text.Split('\n')
.Select(t => t.Replace("\r", "\r\n")).ToArray();
Run Code Online (Sandbox Code Playgroud)
所以我想知道 - 有更好的方法吗?
接受的答案
string[] lines = Regex.Split(tbIn.Text, @"(?<=\r\n)(?!$)");
Run Code Online (Sandbox Code Playgroud) c# ×4
linq ×2
sql ×2
sql-server ×2
.net ×1
64-bit ×1
asp.net ×1
asp.net-mvc ×1
css ×1
database ×1
delphi ×1
dll ×1
dynamic ×1
dynamic-sql ×1
html ×1
html-select ×1
java ×1
join ×1
jsp ×1
jsp-tags ×1
reflection ×1
split ×1
string ×1