我正在尝试编写将从参数列表中推断出类型的代码,然后调用与这些参数匹配的方法.这非常有效,除非参数列表中包含null值.
我想知道如何使Type.GetMethod调用匹配函数/重载,即使null参数列表中的参数.
object CallMethodReflection(object o, string nameMethod, params object[] args)
{
try
{
var types = TypesFromObjects(args);
var theMethod = o.GetType().GetMethod(nameMethod, types);
return (theMethod == null) ? null : theMethod.Invoke(o, args);
}
catch (Exception ex)
{
return null;
}
}
Type[] TypesFromObjects(params object[] pParams)
{
var types = new List<Type>();
foreach (var param in pParams)
{
types.Add((param == null) ? null : param.GetType());
}
return types.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
主要问题是types.Add((param == null) ? null : …
Visual Studio 2013在垂直滚动条中添加了颜色指示器,并在介绍页面中提供了一些有用的图例。并且,该网站上的其他问题也询问了颜色的一般含义,以及特定的,不太常见的颜色。但是,升级到Visual Studio 2017后,现在我在滚动条上看到了新的灰色标记,并且很难确定它们的模式和重要性。
我知道红色标记表示错误,黄色标记表示已更改,而较深的灰色标记表示滚动位置。那些较浅的灰色标记与类,属性或我所知的其他内容不符。
我有一个https页面(https://example.com/main.php),其中包含一个非https源的iframe(http://example.com/inner.php).两个文件都在同一台服务器上 - 只有一个用https访问而另一个不是.我需要非https页面才能main.php使用代码等在https 页面上执行javascriptparent.myfunction()
但是,当我尝试这个时,我收到以下错误:
不安全的JavaScript尝试使用网址http://example.com/inner.php从网址https://example.com/main.php访问框架.域,协议和端口必须匹配.
我已经设置document.domain = 'example.com'了两个文件,我认为这将解决它,但是,它没有.有没有办法允许框架在父框架上执行javascripts,反之亦然?如果是这样,这有什么安全隐患?
PS:对于那些建议只对两个页面使用https或http的人,我正在调查.但是,由于iframe页面中发生的进程,由于服务器负载问题,这可能不是一个可行的选项.
我问了一个关于从函数中返回一个Disposable(IDisposable)对象的问题,但是如果我在那里提出这个问题,我认为我会讨论这个问题.
我创建了一些示例代码:
class UsingTest
{
public class Disposable : IDisposable
{
public void Dispose()
{
var i = 0;
i++;
}
}
public static Disposable GetDisposable(bool error)
{
var obj = new Disposable();
if (error)
throw new Exception("Error!");
return obj;
}
}
Run Code Online (Sandbox Code Playgroud)
我故意用这种方式编码,因为我打电话给:
using (var tmp = UsingTest.GetDisposable(true)) { }
Run Code Online (Sandbox Code Playgroud)
使用调试器,我注意到该Dispose方法永远不会执行,即使我们已经实例化了一个Disposable对象.如果我正确地理解了这个目的Dispose,如果这个类实际上已经打开了句柄之类的东西,那么我们一旦完成它们就不会关闭它们.
我问这个问题是因为这种行为符合我的期望,但在相关问题的答案中,人们似乎表明using会照顾一切.
如果using仍然以某种方式处理所有这些,有人可以解释我错过了什么?但是,如果这段代码确实会导致资源泄漏,你会如何建议我编写代码GetDisposable(条件是我必须实例化IDisposable对象并运行可能在return语句之前抛出异常的代码)?
我有一个DirectoryEntry代表用户的对象.从DirectoryEntry.Properties集合中,我正在检索"manager"属性,它将为用户的经理提供一个专有名称("DN")值.
我可以DirectoryEntry从这两个对象中检索管理器的对象吗?如果是这样,怎么样?
我想象的东西DirectoryEntry.GetEntryFromDN(dnManager);,但我找不到类似的电话.
为了澄清,DirectoryEntry和DN是我拥有的唯一信息.我不能实例化一个新的DirectoryEntry因为那时我将不得不使用默认目录和凭据或具有目录名称/端口和用户名/密码.
我无法在任何地方找到这个在线的描述.当我尝试运行和调试ASP.NET MVC3项目时,我从Visual Studio 2012 Pro收到此提示.我想知道:

visual-studio visual-studio-debugging asp.net-mvc-3 visual-studio-2012
运行以下代码:
for (var i=0; i<3; i++) {
setTimeout( function() { console.log(i); } , 500 );
}
Run Code Online (Sandbox Code Playgroud)
输出"3"三次.它输出的是最终值,i而不是i创建内部函数时的值.
如果我想输出为1,2和3,我该如何编写这段代码?如何使用i函数定义时的值而不是最终值?
我已经回复了这里的线程(或者至少评论过)包含这样的代码的答案,但我想知道编写一系列if分支是否好或坏的形式,其中一个(或多个)分支在其中不执行任何操作,通常是为了消除null每个分支的检查.
一个例子(C#代码):
if (str == null) { /* Do nothing */ }
else if (str == "SomeSpecialValue")
{
// ...
}
else if (str.Length > 1)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
代替:
if (str != null && str == "SomeSpecialValue")
{
// ...
}
else if (str != null && str.Length > 1)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
当然,这只是一个例子,因为我倾向于使用更大更复杂的类.在大多数情况下,一个null值表示什么都不做.
对我来说,这可以减少我的代码的复杂性,并在我看到它时有意义.那么,这是好还是坏的形式(代码味道,甚至)?
Web服务返回以下嵌套的json对象:
{"age":"21-24","gender":"Male","location":"San Francisco, CA","influencer score":"70-79","interests":{"Entertainment":{"Celebrities":{"Megan Fox":{},"Michael Jackson":{}},},"Social Networks & Online Communities":{"Web Personalization": {},"Journals & Personal Sites": {},},"Sports":{"Basketball":{}},},"education":"Completed Graduate School","occupation":"Professional/Technical","children":"No","household_income":"75k-100k","marital_status":"Single","home_owner_status":"Rent"}
Run Code Online (Sandbox Code Playgroud)
我只是想在不指定属性名称的情况下遍历此对象,我尝试了以下代码:
for (var data in json_data) {
alert("Key:" + data + " Values:" + json_data[data]);
}
Run Code Online (Sandbox Code Playgroud)
但是如果它是一个嵌套值,它会将值打印为[object Object],是否有任何方法可以更深入地迭代嵌套值?
我试图想出一种方法来创建一个零宽度,零高度的图像,它符合任何格式的标准.
我已经尝试过Windows位图(BMP)格式(仅限54字节的标题文件),但似乎图像阅读器不接受它.
理论上0x0-BMP字节串:
424D360000000000000036000000280000000000000000000000010020000000000000000000C40E0000C40E00000000000000000000
Run Code Online (Sandbox Code Playgroud)
哪种格式支持这种格式,我可以使用哪些工具来创建它?甚至编程解决方案也足够了(例如C#System.Drawing脚本).
c# ×3
javascript ×3
.net ×1
closures ×1
conditional ×1
dns ×1
https ×1
idisposable ×1
iframe ×1
image ×1
json ×1
ldap ×1
null ×1
reflection ×1
scope ×1
xss ×1