Re[3]: Silverligth + cross-platform CLR
От: no4  
Дата: 02.05.07 06:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, vguzev, Вы писали:


V>>The CLR has good support for dynamic languages today. IronPython-1.0 demonstrates this.


VD>Интересно, эти пиарщики вообще IronPython смотрели? Он скорее демонстрация того, что ЦЛР весьма фигово поддерживает динамические языки. И то что динамические языки просто не вписываются в идеологию ЦЛР. Тот же Питон реально толко потребитель (коньсюмер). Делать на нем сборки для использования из других языков просто нельзя.


1. Можно делать DLL странной структуры (вот только как их использовать из других языков? — может кто знает)
2. Можно сабклассить родные класссы.

Можно писать небольшие обертки для взаимодействия с другими языками на C# вот, например полный исходный текст лоадера плагинов для Far.Net:

using FarManager;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using IronPython.Hosting;
using IronPython.Modules;
public class IronPythonLoader : BasePlugin
{
    protected string PluginFile(string name)
    {
           FileInfo fi=new FileInfo(Assembly.GetExecutingAssembly().Location);
           return fi.Directory.Parent.FullName+"\\"+name;
    }
    protected void LoadScript(string fileName)
    {
        PythonEngine engine = new PythonEngine();
        engine.AddToPath(Path.GetDirectoryName(fileName));
        engine.Import("site");        
        ClrModule clr =  (ClrModule)engine.Import("clr");

        
        EngineModule engineModule = engine.CreateModule("__main__", false);
        engine.DefaultModule = engineModule;

        clr.AddReferenceByPartialName("FarNetIntf");
        engine.Import("FarManager");
        engine.Globals["far"] = Far;
        engine.ExecuteFile(fileName);
    }
    override public void Connect()
    {
        string scriptsFolder = PluginFile("Scripts");
        foreach(FileInfo file in new DirectoryInfo(scriptsFolder).GetFiles())
            LoadScript(file.FullName);
    }
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.