我决定开始使用Ninject并面临一个问题.说我有以下场景.我有一个IService接口和2个实现此接口的类.而且我还有一个类,它有一个构造函数获取IService和一个int.如何使用Ninject创建此类的实例(我不想硬连接这个int,我想在每次获取实例时都传递它)?
以下是一些说明情况的代码:
interface IService
{
void Func();
}
class StandardService : IService
{
public void Func()
{
Console.WriteLine("Standard");
}
}
class AlternativeService : IService
{
public void Func()
{
Console.WriteLine("Alternative");
}
}
class MyClass
{
public MyClass(IService service, int i)
{
this.service = service;
}
public void Func()
{
service.Func();
}
IService service = null;
}
class Program
{
static void Main(string[] args)
{
IKernel kernel = new StandardKernel(new InlineModule(
x => x.Bind<IService>().To<AlternativeService>(),
x => x.Bind<MyClass>().ToSelf())); …Run Code Online (Sandbox Code Playgroud)
我有一个有2个组合框的表格.我想combobox2.DataSource基于combobox1.Text和填充combobox2.Text(我假设用户已完成输入combobox1并且正在输入中combobox2).所以我有一个这样的事件处理程序combobox2:
private void combobox2_TextChanged(object sender, EventArgs e)
{
if (cmbDataSourceExtractor.IsBusy)
cmbDataSourceExtractor.CancelAsync();
var filledComboboxValues = new FilledComboboxValues{ V1 = combobox1.Text,
V2 = combobox2.Text};
cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );
}
Run Code Online (Sandbox Code Playgroud)
至于构建DataSource是一个耗时的过程(它创建一个对数据库的请求并执行它)我决定使用BackgroundWorker在另一个进程中执行它更好.因此,当cmbDataSourceExtractor尚未完成其工作并且用户再键入一个符号时,会出现这种情况.在这种情况下,我在这一行上得到一个例外,
cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );说明BackgroundWorker正忙,无法同时执行多个操作.
如何摆脱这种异常?
提前致谢!
我试图通过ADO.net从DB获取输出值.有一个客户端代码:
using (var connection = new SqlConnection(ConnectionString))
{
connection.Open();
SqlCommand command = new SqlCommand("pDoSomethingParamsRes", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@i", 1);
var outParam = new SqlParameter("@out", SqlDbType.VarChar);
outParam.Direction = ParameterDirection.Output;
command.Parameters.Add(outParam);
command.ExecuteNonQuery();
Console.WriteLine(command.Parameters["@out"].Value.ToString());
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下异常:
the Size property has an invalid size of 0
Run Code Online (Sandbox Code Playgroud)
根据手册SqlParameter.Size属性我可能会省略大小.为什么我会得到这个例外?如何在不通过尺寸的情况下使其工作?
谢谢您的帮助!
当我尝试编译以下代码时
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using NHibernate;
namespace NewNHTest
{
class A
{ }
class Program
{
static void Main(string[] args)
{
ISession session;
var q = session.Query<A>();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'NHibernate.ISession' does not contain a definition for 'Query' and no extension method 'Query' accepting a first argument of type 'NHibernate.ISession' could be found (are you missing a using directive or an assembly reference?)
Run Code Online (Sandbox Code Playgroud)
NHibernate.dll版本是3.0.0.4000.
.Net版本的项目是3.5.
我究竟做错了什么?
谢谢您的帮助!
我遇到了以下问题:有一个用户必须执行存储过程(spTest).在spTest的主体中调用sp_trace_generateevent.sp_trace_generateevent需要更改跟踪权限,我不希望用户拥有它.所以我希望用户能够执行spTest.我怎样才能做到这一点?
我想编写一个CLR过程,它接受一个文本并返回一个包含本文中所有单词的表.但我无法弄清楚如何返回一张桌子.你能告诉我吗?
[Microsoft.SqlServer.Server.SqlFunction]
public static WhatTypeShouldIWriteHere Function1(SqlString str)
{
string[] words = Regex.Split(str, @"\W+").Distinct().ToArray();
//how to return a table with one column of words?
}
谢谢您的帮助.
更新:我需要为sql-2005做这件事
这是引发异常的代码
public Configuration GetConfiguration()
{
var persister = SQLiteConfiguration
.Standard
.UsingFile("Test.db")
.ShowSql();
var configuration = Fluently
.Configure()
.Database(persister)
.Mappings(map => map.FluentMappings.AddFromAssemblyOf<WordMap>())
.BuildConfiguration();
new SchemaExport(configuration).Execute(true, true, false);
return configuration;
}
Run Code Online (Sandbox Code Playgroud)
完整的例外文字:
失败:NHibernate.HibernateException:无法从NHibernate.Driver.SQLite20Driver,NHibernate,Version = 2.1.2.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4创建驱动程序.
----> System.Reflection.TargetInvocationException:调用目标抛出了异常.
----> NHibernate.HibernateException:找不到程序集System.Data.SQLite中的IDbCommand和IDbConnection实现.确保程序集System.Data.SQLite位于应用程序目录或全局程序集缓存中.如果程序集位于GAC中,请使用应用程序配置文件中的元素指定程序集的全名.
NHibernate的
版本是2.1.2.4000 版本的System.Data.SQLite是1.0.66.0
目标框架是3.5(x86)
System.Data.SQLite的本地副本是ON.
可能有什么不对?
我有以下课程:
class Address
{
public string City {get; set;}
public string Street {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我有一个带有2个组合框的表格.我将这些组合框绑定到Address类:
CityComboBox.DataSource = GetCityDataSource();
StreetComboBox.DataSource = GetStreetDataSource();
Address address = new Address();
CityComboBox.DataBindings.Add("SelectedItem", address, "City");
StreetComboBox.DataBindings.Add("SelectedItem", address, "Street");
Run Code Online (Sandbox Code Playgroud)
城市和街道数据库不完整,因此有时用户应将自定义值写入组合框.问题是 - 组合框数据绑定不允许将自定义值写入此组合框.这种行为有解决方法吗?
提前致谢!
c# ×7
sql-server ×3
nhibernate ×2
winforms ×2
.net ×1
ado.net ×1
clr ×1
combobox ×1
data-binding ×1
ninject ×1
permissions ×1
sqlite ×1