xamarin формы... не может получить значение параметра из SqlCommand ... ошибка "MarshalByRefObject" утверждает, что он определен в "mscorlib".. не может быть найден
У меня есть проект xamarin.forms. В PCL у меня есть класс с этими 3 строками кода....
1) SqlCommand cmd = new SqlCommand();
.... (Примечание: эта строка кода работает)
2) cmd.Parameters.Add(new SqlParameter("@UserID", SqlDbType.Char, 5)).Direction = ParameterDirection.Input;
.... (Примечание: эта строка кода работает)
3) var userid = cmd.Parameters["@UserID"].Value;
.... (Примечание: эта строка кода НЕ работает)
Я получаю это сообщение...
"Ссылка по типу"MarshalByRefObject"утверждает, что она определена в" mscorlib ", но не может быть найдена
эти 3 строки кода работают в конкретном проекте Android, но не в классе PCL
Я могу добавить параметры в SqlCommand в классе PCL, но не могу получить значение
Заранее спасибо за помощь
1 ответ
Полное пространство имен = System.Data.SqlClient.SqlCommand .... я ссылался на System.Data.dll в... C:\Program Files (x86)\ Справочные сборки \Microsoft\Framework\MonoAndroid\v1.0
DLL, на которую вы ссылаетесь, предназначена только для проекта Mono.Android, но не для проекта PCL. Его нельзя использовать в проекте PCL. Для объяснения, пожалуйста, обратитесь к этому делу.
Если вы хотите использовать Native Android SQLite в PCL, пожалуйста, используйте Dependency Service:
В вашем проекте PCL. Создать интерфейс (
ISQLDb
) для вашего Сервиса зависимостей и использовать Сервис сDependencyService.Get<ISQLDb>()
:public interface ISQLDb { void InitCmd(); } private void btnClick_Clicked(object sender, EventArgs e) { //use the service any where in your PCL project ISQLDb db=DependencyService.Get<ISQLDb>(); db.InitCmd(); }
Создайте класс для реализации сервиса в проекте Mono.Android и зарегистрируйте его как сервис зависимостей:
//register the Dependency Service [assembly:Xamarin.Forms.Dependency(typeof(SQLDbImpl))] namespace SQLCommandDemo.Droid { //implements the ISQLDb Interface public class SQLDbImpl : ISQLDb { public void InitCmd() { SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(new SqlParameter("@UserID", SqlDbType.Char, 5)).Direction = ParameterDirection.Input; var userid = cmd.Parameters["@UserID"].Value; } } }