小编Jam*_*unt的帖子

通过反射调用带有可选参数的方法

我可以使用Type.InvokeMember通过反射来调用方法,并且它看起来非常健壮,例如处理param数组参数.但由于某种原因,它不处理可选参数.

是否有更好的内置方法来调用考虑可选参数的方法(可能使用DLR)?

.net c# reflection optional-parameters

10
推荐指数
1
解决办法
3625
查看次数

Roslyn - 从内存中的程序集创建MetadataReference

使用ASP.NET 5应用程序(Visual Studio 2015 CTP5)和Microsoft.CodeAnalysis.CSharp.

如果我尝试创建MetadataReference到一个程序集,该程序集是解决方案的一部分,将其作为对CSharpCompilation.Create的引用传递,我得到一个System.ArgumentException,"空路径名称不合法".

// Throws exception
MetadataReference.CreateFromAssembly(typeof(this).Assembly);

// Doesn't throw exception
MetadataReference.CreateFromAssembly(typeof(Object).Assembly);
Run Code Online (Sandbox Code Playgroud)

如果我检查程序集的Location属性,它是空的.我假设这与在ASP.NET 5中编译内存中应用程序的新方法有关,因此程序集不会存储在光盘上.

那么有没有办法将Roslyn的引用传递给没有Location属性的程序集,或者目前是不支持的?

编辑:@JaredPar - @SLaks已经突出显示它失败的确切位置,但这里是信息的完整堆栈跟踪.我之前在System.*程序集中创建了其他几个MetadataReferences,并且没有任何问题.

System.ArgumentException
Empty path name is not legal.
C:\Development\Incubator\net.framework\src\Webfuel.Services.Host\ScriptHelper\ScriptHelper.cs
Line 86:  
Line 87:              // Compile the code
Line 88:              var compilation = CSharpCompilation.Create(
Line 89:                  assemblyName,
Line 90:                  options: new CSharpCompilationOptions(outputKind: OutputKind.DynamicallyLinkedLibrary),
 at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, Win32Native.SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at …
Run Code Online (Sandbox Code Playgroud)

c# asp.net roslyn asp.net-core

9
推荐指数
1
解决办法
3205
查看次数

C#添加引用问题

我将selenium引用添加到项目中并且正常工作但是当我单击rebuild project时出现此错误:

Error 3   The type or namespace name 'Selenium' could not be found (are you
Run Code Online (Sandbox Code Playgroud)

缺少using指令或程序集引用?)D:\ PROJEKTI\crawler\WebCrawlerSuite\NCrawler\Net 4.0\NCrawler.WinDemo\SeleniumHtmlDocumentProcessor.cs 6 7 NCrawler.WinDemo

这个警告:

Warning   2   The referenced assembly "ThoughtWorks.Selenium.Core" could not
Run Code Online (Sandbox Code Playgroud)

解决因为它依赖于"System.Web,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a",它不在当前目标框架".NETFramework,Version = v4.0,Profile = Client"中.请删除不在目标框架中的程序集的引用或考虑重新定位项目.NCrawler.WinDemo

什么可能是错的?

c# selenium

2
推荐指数
1
解决办法
3294
查看次数

Angular JS指令,在链接函数中更改2路数据绑定

我正在尝试创建一个角度指令,我可以通过单个选项对象或某些属性设置选项.以下是这种代码的示例:

app.directive('testElement', [function () {
    return {
        restrict: "E",
        scope: {
            options: "="
        },
        template: "<p><span>Name: </span>{{ options.name }}</p>",
        link: function (scope, element, attrs) {
            scope.options = scope.options || {};
            if (attrs.name)
                scope.options.name = attrs.name;
        }
    };
}]);
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,因为如果我通过options属性传入名称,则会显示名称值.但是,如果我通过name属性传递名称,即使链接函数确实修改了选项,也不会呈现该值.

http://plnkr.co/edit/IMVZRdAW2a5HvSq2WtgT?p=preview

我觉得我缺少一些关于选项双向数据绑定的基本方法.

javascript angularjs

2
推荐指数
1
解决办法
4301
查看次数