小编Ham*_*jam的帖子

在Android设备上开发C#/.NET

我想在我的HTC Magic上运行C#程序,我可以在Android市场上找到单声道应用程序,但我不知道如何运行C#.

代码只是为了好玩,我不想要官方支持等.在Windows Mobile上编写Visual Basic代码之后,我真的想在Android上编写C#代码,无论是直接使用某种编辑器(如果存在),还是在PC上编译然后在Android上安装它.

如果有人知道这样做的方法,请告诉我.

谢谢

.net c# mono android

14
推荐指数
2
解决办法
4万
查看次数

ToList()方法在哪里?(IQueryable的)

如果我试试这个,它会起作用:

var query = myContextObject.Users.Where(u=>u.Name == "John");
query.ToList();
Run Code Online (Sandbox Code Playgroud)

我可以打电话ToList和许多其他扩展方法.

但如果我试试这个:

public List ConvertQueryToList(IQueryable query)
{
    return query.ToList();
}
Run Code Online (Sandbox Code Playgroud)

ToList将无法访问,我猜这是因为ToList是一种扩展方法,但那么ToList第一个例子中是如何附加的呢?是否可以ToList在第二种情况下访问?

.net c# linq extension-methods

13
推荐指数
3
解决办法
2万
查看次数

检查浏览器是否为chrome或edge

我目前的网站仅在Chrome浏览器中运行,为此,我已按以下方式检查

if (Request.Browser.Browser == "Chrome")
{
   // Allow
}
Run Code Online (Sandbox Code Playgroud)

但是对于Edge来说它也只是回归"Chrome".

如何仅允许从Chrome浏览器进行访问?

.net c# google-chrome microsoft-edge

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

Join with Where子句的查询和方法(lambda)语法的等价性

我简化的LINQ JoinWhere两个表如下所示:

var join = context.Foo
  .Join(context.Bar,
    foo => new { foo.Year, foo.Month },
    bar => new { bar.Year, bar.Month },
    (foo, bar) => new { foo.Name, bar.Owner, foo.Year })
  .Where(anon => anon.Year == 2015).ToList();
Run Code Online (Sandbox Code Playgroud)

或者我可以使用以下语法,我希望它是等效的:

var joinQuery = from foo in context.Foo
                join bar in context.Bar
                on new { foo.Year, foo.Month } equals new { bar.Year, bar.Month }
                where foo.Year == 2015
                select new { foo.Name, bar.Owner };
var join = joinQuery.ToList();
Run Code Online (Sandbox Code Playgroud)

我和我想知道的一个区别是命令的顺序.在lambda语法连接中,我将foo.Year属性添加到我的匿名返回类型,因此我可以在之后进行过滤,而在另一个查询中,我仍然可以在子句中使用foo …

.net c# linq linq-to-entities entity-framework

12
推荐指数
2
解决办法
942
查看次数

线程安全收集与上限

我在具有以下属性的集合之后:

  • threadsafe:它将在asp.net中使用,多个客户端可以尝试同时添加,删除和访问成员
  • max elements:我希望能够在构造时设置上限,最大元素数
  • TryAdd:一种与BlockingCollection<T>.TryAdd(T)完美相同的方法,即如果已达到最大元素数,它将返回false
  • 类似于字典:在大多数其他方面,a ConcurrentDictionary将是完美的,即通过键识别元素的能力,删除任何项目(不仅仅是第一个或最后一个,我认为这将是限制BlockingCollection)

在我试图推销自己之前,我的问题是:

  1. 我是否错过了一个内置类型,它会对集合中的元素数量设置安全上限?
  2. 有没有办法以BlockingCollection某种方式实现这个功能?

最后,如果我确实需要尝试自己做,我应该考虑什么方法?它是简单的包裹Dictionarylocks

使用示例: 具有参与人数限定限制的聊天室可以存储参与者的连接信息并拒绝新参赛者,直到有足够的空间进入

.net c# icollection

11
推荐指数
1
解决办法
1143
查看次数

如何在回溯上显示lambda函数?

我正在写一个C++11软件而且我正在使用lambdas.当我打印回溯时,backtrace_symbols_fd除了lambda之外,所有函数都被解除了.这有点显而易见,因为它们是匿名函数,但有一种方法可以获得更多的洞察力而不是原始指针?

我在Linux上使用GCC 4.8

c++ lambda gcc backtrace c++11

11
推荐指数
1
解决办法
921
查看次数

使用IndexOf和CultureInfo 1031的ArgumentOutOfRangeException

string s = "Gewerbegebiet Waldstraße"; //other possible input "Waldstrasse"

int iFoundStart = s.IndexOf("strasse", StringComparison.CurrentCulture);
if (iFoundStart > -1)
    s = s.Remove(iFoundStart, 7);
Run Code Online (Sandbox Code Playgroud)

我正在运行CultureInfo 1031(德语).

IndexOf将'straße'或'strasse'与定义的'strasse'匹配,并返回18作为位置.

删除和替换都没有设置文化的任何重载.

如果我删除6个字符使用删除1字符将保留,如果输入字符串是'strasse'和'straße'将工作.如果输入字符串是'straße'并且我删除了7个字符,则会得到ArgumentOutOfRangeException.

有没有办法安全地删除找到的字符串?提供IndexOf的最后一个索引的任何方法?我更接近IndexOf,它的本机代码正如预期的那样 - 所以没办法做自己的事......

c# exception indexof currentculture

10
推荐指数
1
解决办法
256
查看次数

使用.NET的Web自动化

我是一个非常新手的程序员.你们中的任何人都知道如何进行网络自动化C#吗?基本上,我只想在网上自动实现一些简单的操作.打开网络链接后,我只想自动执行以下操作.

  1. 自动输入一些值并单击"运行"按钮.
  2. 选中ComboBox并单击"下载"按钮.

我怎么能这样做C#?我的朋友介绍我使用Powershell,但我想.Net也提供这种类型的库.有关我的任何建议或链接吗?

.net c#

9
推荐指数
3
解决办法
4万
查看次数

MediaPlayer中的内存泄漏

有人可以解释为什么以下程序内存不足吗?

class Program
{
    private static void ThreadRoutine()
    {
        System.Windows.Media.MediaPlayer player = new System.Windows.Media.MediaPlayer();
    }

    static void Main(string[] args)
    {
        Thread aThread;
        int iteration = 1;

        while (true)
        {
            aThread = new Thread(ThreadRoutine);
            aThread.Start();
            aThread.Join();

            Console.WriteLine("Iteration: " + iteration++);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

公平地说,我得到的具体例外是System.ComponentModel.Win32Exception"没有足够的存储空间来处理此命令".尝试创建新的MediaPlayer时会发生异常.

MediaPlayer没有实现IDisposable接口,所以我不确定是否还需要其他清理.我当然没有在MediaPlayer文档中找到任何内容.

c# multithreading garbage-collection threadpool

8
推荐指数
1
解决办法
885
查看次数

WebApi DI Autofac - 确保控制器具有无参数的公共构造函数

我正在使用依赖注入编写web api,在存储库的帮助下工作单元和Autofac作为容器.依赖性在24小时前被完美注入,但突然间,当我今天开始工作时,我一直收到错误

"消息":"发生错误.","ExceptionMessage":"尝试创建'SearchController'类型的控制器时发生错误.确保控制器具有无参数的公共构造函数.","ExceptionType":" System.InvalidOperationException"

我将包括我的签名以及我如何注册类型,如果有人可以指出我的代码可能出错,我将非常高兴.

在我的网络api控制器上,我有

 private IUnitOfWork<Listing> _unitOfWork = null;
 public SearchController(IUnitOfWork<Listing> unitOfWork)
 {
     _unitOfWork = unitOfWork;
 }
Run Code Online (Sandbox Code Playgroud)

工作单元采用泛型类型参数来创建存储库.

在我的WebApiConfig.cs中,我正在注册以下类型

 builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
 builder.RegisterGeneric(typeof(UnitOfWork<>)).As(typeof(IUnitOfWork<>)).InstancePerDependency();
 builder.RegisterType(typeof(SearchController)).UsingConstructor(typeof(IUnitOfWork<Listing>));
Run Code Online (Sandbox Code Playgroud)

我正在注册SearchController以使用接受IUnitOfWork <>的构造函数.在我添加Mocked单元测试之前一切正常,但出于某种目的,我现在继续得到这个错误.我还注册了DependencyResolver

var container = builder.Build();
var resolver = new AutofacWebApiDependencyResolver(container);
config.DependencyResolver = resolver;
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection unit-of-work autofac asp.net-web-api2

8
推荐指数
1
解决办法
6042
查看次数