2014-03-07 65 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 –