我試圖使用DOTNET將C#代碼轉換爲PHP,我從來不使用C#但是使用了很多PHP,因此,我將以基本的東西開始,如果有用的做轉換,那麼有下一個C#代碼片段。使用DOTNET類將C#代碼轉換爲Php
using System.Text;
class AES
{
private byte[] _key;
private byte[] _iv;
public AES()
{
}
public AES(string keyBase, string iv)
{
_key = Encoding.ASCII.GetBytes(keyBase);
_iv = Encoding.ASCII.GetBytes(iv);
}
}
然後試圖做到這片轉換,所以我在PHP
<?php
class Ejemplo{
public function FunctionName($value = '')
{
echo "Hello world!...";
//var_dump(\System\Text\Encoding::GetEncoding());
$stack = new DOTNET("mscorlib", "System.Text.Encoding");
var_dump($stack);
}
}
$eje = new Ejemplo();
$eje->FunctionName('nada');
?>
,但在該行 「$棧=新DOTNET(」 mscorlib程序 「」 System.Text下。編碼 「);」
得到這個錯誤「致命錯誤:未捕獲的異常‘發出com_exception’有消息「未能實例.NET對象[的CreateInstance] [0x80131513]」,
然後尋找網頁,我看到需要一個完整的字符串配版和其他東西的DLL refered爲「System.Text.Encoding」,我的問題是如何知道一個DLL的信息,以能夠創建這樣
$csclass = new DOTNET("CSharpCOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=beb607ae770f5750", "CSharpCOM.CSharpCOMClass");
一個字符串,但我
$stack = new DOTNET("mscorlib", "System.Text.Encoding");
或者如果有人知道另一種方式來做到這一點。謝謝大家
由於使用,U能告訴我如何能做到這一點,你回答修改後的行到「$ stack = new DOTNET(」mscorlib「,」System.Text「);」但得到了相同的,我需要知道該怎麼做才能知道這樣的DLL的完整字符串「CSharpCOM,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = beb607ae770f5750」 – pipook
「System.Text」不是一個類,但一個名字空間,你也不能創建它的一個實例。創建一個System.Text.ASCIIEncoding的實例,正如我在答案中所顯示的那樣。 – NineBerry
謝謝,我用你的例子,但又得到了另一個致命錯誤「致命錯誤:在第14行D:\ xampp \ htdocs \ dotnet \ ejemplo.php」中,就像這樣,行是「$ bytes = $ encoding- > GetBytes(「Hello World」);「,認爲我打算使用編譯器.cs中的.exe文件:( – pipook