问题列表 - 第11703页

无法转换类型异常的COM对象

我有以下代码:

public void Test(IMyInterface iInterface)
{
  iInterface.CallMethod ( );
}
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.但是,如果我将代码更改为线程:

private IMyInterface myInterface;
public void Test(IMyInterface iInterface)
{
  myInterface = iInterface;
  new Thread ( new ThreadStart ( CallInterfaceMethod) ).Start ( );
}

public void CallInterfaceMethod ( )
{
  myInterface.CallMethod ( )
}
Run Code Online (Sandbox Code Playgroud)

当我使用线程时,我收到异常:

无法将"System .__ ComObject"类型的COM对象强制转换为接口类型"IMyInterface".此操作失败,因为对于具有IID"{GUID}"的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口

但是应该支持接口就好了吗?有人对这里发生的事情有任何想法吗?

c# com interface

20
推荐指数
1
解决办法
2万
查看次数

一些C#命名约定问题

1)声明变量的政策是什么?你应该总是使用关键字private,还是可以跳过它?

string MyVar1;
Run Code Online (Sandbox Code Playgroud)

private string MyVar1;
Run Code Online (Sandbox Code Playgroud)

我看到的唯一原因是Microsoft有一天可以更改默认访问修饰符public而不是private.

在哪里说私人是可选的?对MSDN的任何引用?

2)常量的命名策略?

在写一个常量时我总是使用大写字母,但是一位朋友告诉我这违反了微软的命名政策,是吗?

const string MYVAR1;
Run Code Online (Sandbox Code Playgroud)

VS

const string myVar1;
Run Code Online (Sandbox Code Playgroud)

3)Pascal还是Camel?

我个人认为骆驼看起来很丑陋.

c# variables private constants naming-conventions

7
推荐指数
3
解决办法
4245
查看次数

Oracle对某些表的更新无限期挂起

我可以很好地更新一些表,但我的ASP.NET应用程序或SQLPLUS无法更新我拥有的某个表.两者都无限期地挂起.我必须强行退出SQLPLUS.我在运行以下内容的标准OracleCommand对象中都有更新语句:

cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

但我也有asp:SqlDataSources绑定到GridView.似乎没什么用.

这里有一个类似的问题:Oracle Update挂起.我粗略地认为某些东西必须在这张桌子上有某种锁,但我不知道如何删除它甚至找不到它.任何帮助将不胜感激.

我正在运行Oracle 9i EE 9.2.

database oracle sqlplus

2
推荐指数
1
解决办法
4630
查看次数

我怎么能重构这个工厂类型的方法和数据库调用是可测试的?

我正在努力学习如何进行单元测试和模拟.我理解TDD和基本测试的一些原理.但是,我正在考虑重构下面的代码,这些代码是在没有测试的情况下编写的,并且我试图了解它是如何更改以使其可测试的.

public class AgentRepository
{

public Agent Select(int agentId)
{
    Agent tmp = null;
    using (IDataReader agentInformation = GetAgentFromDatabase(agentId))
    {
        if (agentInformation.Read())
        {
            tmp = new Agent();
            tmp.AgentId = int.Parse(agentInformation["AgentId"].ToString());
            tmp.FirstName = agentInformation["FirstName"].ToString();
            tmp.LastName = agentInformation["LastName"].ToString();
            tmp.Address1 = agentInformation["Address1"].ToString();
            tmp.Address2 = agentInformation["Address2"].ToString();
            tmp.City = agentInformation["City"].ToString();
            tmp.State = agentInformation["State"].ToString();
            tmp.PostalCode = agentInformation["PostalCode"].ToString();
            tmp.PhoneNumber = agentInformation["PhoneNumber"].ToString();
        }
    }

    return tmp;
}

private IDataReader GetAgentFromDatabase(int agentId)
{
    SqlCommand cmd = new SqlCommand("SelectAgentById");
    cmd.CommandType = CommandType.StoredProcedure;

    SqlDatabase sqlDb = new SqlDatabase("MyConnectionString");
    sqlDb.AddInParameter(cmd, "AgentId", DbType.Int32, …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing mocking isolation-frameworks

12
推荐指数
1
解决办法
578
查看次数

5
推荐指数
1
解决办法
6399
查看次数

有没有办法在DMG内的用户Documents文件夹中添加别名

很容易Applications/Applications每个Mac上的DMG中的文件夹添加别名.但是是否可以在用户的Documents文件夹中添加别名,其中Documents文件夹的每个用户具有不同的路径?我尝试添加一个别名~/Documents,但它成了一个别名/Users/andyb/Documents,显然不适用于任何其他人的机器.

macos installer dmg

6
推荐指数
1
解决办法
661
查看次数

如何在SQL中获取当前日期时间?

想要current datetime插入lastModifiedTime列.我正在使用MySQL数据库.我的问题是:

  1. SQL中是否有可用的功能?要么

  2. 它是实现依赖所以每个数据库都有自己的功能吗?

  3. MySQL中可用的功能是什么?

sql database current-time

25
推荐指数
5
解决办法
11万
查看次数

不能从泛型方法返回'null'?

我有一个通用的方法,如:

public T GetLevelElement<T>(string name) where T : ILevelElement
{
    //[...]
}
Run Code Online (Sandbox Code Playgroud)

这基本上在db中执行查找,在某些情况下它不会(并且不能返回)结果,我想返回null.

然而,这显然是不可能的,因为' T和null之间没有隐式转换 '.在这种情况下我该怎么办?

.net c# generics

6
推荐指数
1
解决办法
1940
查看次数

Excel中的自动超链接

我正在生成一个csv文件,其中包含指向特定文件的链接.看起来像:

d:\ ABC,d:\ XXX ..
d:\ FGT\a.txt中,d:\ YXZ ..
.
.

现在,当在excel中打开它时,我希望将它们转换为超链接,以便用户单击它们并打开相应的文件或文件夹.有什么方法可以让excel将它识别为链接并使它们成为可点击的链接.excel中的一个简单的一两步就可以做到这一点?

谢谢...

excel

2
推荐指数
1
解决办法
411
查看次数

控制台应用程序的引用的C#版本控制

我已经构建了一个控制台应用程序,它引用了我们构建的另一个DLL的版本4.3.2.1.

它运作良好并完成了它的工作.

然后构建了DLL的4.3.2.2版本,并且控制台应用程序开始死亡,因为它想看4.3.2.1.

有没有办法告诉控制台应用程序使用4.3.2.1或更高版本?4.3.2.1中存在的方法也存在于4.3.2.2中,并且将存在于dll的所有后续版本中.

c# versioning dll visual-studio

2
推荐指数
1
解决办法
694
查看次数