2014-03-07 68 views
0

我从Visual Basic转换缩小功能:YUI压缩VB对C#

example = Yahoo.Yui.Compressor.JavaScriptCompressor.Compress(someString, False, True, True, True, -1, UTF8Encoding.UTF8, Globalization.CultureInfo.InvariantCulture) 

到C#。但是,c#中的压缩方法只接受一个字符串参数,并且没有重载方法。在c#中的下面的代码是否等于上面的原始VB代码?

var compressor = new Yahoo.Yui.Compressor.JavaScriptCompressor(); 
example = compressor.Compress(someString); 
+0

你确定你不能像以前一样使用'Compress'静态方法,而不用在C#中新建一个对象吗?它应该是封面下的同一个程序集。 – Rup

+0

@Rup我得到一个对象引用错误,如果我使用与在VB中一样的静态方法 – suhMAN

+1

@Rup:库中似乎没有静态的'Compress'函数,它是用C#编写的。我不确定VB版本是如何工作的(我假设它不是,或者是旧版本库的一部分)。当前的JavaScriptCompressor代码:http://yuicompressor.codeplex.com/SourceControl/latest#Code/Yahoo.Yui.Compressor/JavaScriptCompressor.cs –

回答

1

C#中的等价物,据我可以告诉the source,将要求您在JavaScriptCompressor实例自己设置相应的属性,而不是将它们传递给(貌似不存在)static Compress方法。例如:

var compressor = new Yahoo.Yui.Compressor.JavaScriptCompressor 
{ 
    Encoding = UTF8Encoding.UTF8, 
    DisableOptimizations = false, 
    ObfuscateJavascript = true, 
    PreserveAllSemicolons = true, 
    IgnoreEval = true, 
    ThreadCulture = Globalization.CultureInfo.InvariantCulture 
}; 

var example = compressor.Compress(someString); 

布尔属性可能与它们以前的顺序不同,所以我只是猜对了。这些属性在库中有一个JavaScriptCompressorConfig类,但我无法找到它将如何传递到压缩器。

0

要调用在VB.NET静态Yahoo.Yui.Compressor.JavaScriptCompressor.Compress方法和instanciating在C#中Yahoo.Yui.Compressor.JavaScriptCompressor类。

您可以在C#中调用Yahoo.Yui.Compressor.JavaScriptCompressor.Compress来重现相同的行为。

+0

除了该方法不存在于当前版本的库中... http://yuicompressor.codeplex.com/SourceControl/latest#Code/Yahoo.Yui.Compressor/JavaScriptCompressor.cs –