Возникает ошибка при использовании BinaryFormatters С# через pythonnetPython

Программы на Python
Ответить
Anonymous
 Возникает ошибка при использовании BinaryFormatters С# через pythonnet

Сообщение Anonymous »

Сейчас я пытаюсь вызвать функции C# из Python, и у меня возникли некоторые проблемы. Извините, но обратите внимание, что я не очень хорошо знаком с dotnet и т. д., и по какой-то причине мне следует использовать версии dotnet sdk 2.0.9 и BinaryFormatter.
Во-первых, я попробовал несколько простых кодов, представленных в виде

Код: Выделить всё

namespace test_Cs
{
public class Class1
{
public int add(int a, int b){
return a+b;
}
}
}
и

Код: Выделить всё

using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System;

namespace test_Cs{
public class Class2{
public Class2(){
Console.WriteLine("Saver enabled");
}
public void save(string path, Class1 obj){
Console.WriteLine("save start");
// BinaryFormatter b = new BinaryFormatter();
// Console.WriteLine("hello world!");
// using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None)){
//   b.Serialize(fs, obj);
Console.WriteLine(obj.add(3,4));
}
}
}
Чтобы реализовать это,

Код: Выделить всё

import clr
clr.AddReference('./bin/Debug/netcoreapp2.0/0.test_Cs')
from test_Cs import Class1, Class2

calc = Class1()

print(calc.add(3,4))

saver = Class2()
saver.save('/Users/jeon-yuseong/0.Jeon_lab/1.codespace_for_lab/2.labcode/4.KRISS/9.practice/0.test_Cs/hi.calc',calc)
В Class2.save, если я использую такую ​​функцию, ошибки не будет и я получу

Код: Выделить всё

7
saver enabled
save start
7
С другой стороны, если я использую Class2.save без аннотаций, у меня есть

Код: Выделить всё

System.TypeLoadException: Could not resolve type with token 0100000d from typeref (expected class 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' in assembly 'System.Runtime.Serialization.Formatters, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in :0
такая ошибка.
Я пробовал pythonnet 2.5, 2.4, 3.0, чтобы узнать, возникает ли это из-за версий, но пробные версии тоже не увенчались успехом.< /p>

Код: Выделить всё

pythonnet : 2.5, 2.4, 3.0
python : 2.7, 3.7, 3.10
dotnet : 2.0.9
mono : 6.12.0.182
Помогите мне, если есть способ избежать этой ошибки.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -pythonnet
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»