小编Mar*_*zek的帖子

蓝牙插座冻结手机

我正在开发Android应用程序.此应用程序应与蓝牙(BT)设备通信(发送一些字节).我在设备(Samsung Galaxy mini)上调试/运行此应用程序时遇到问题.当我创建一个BT插座并停止调试时,手机冻结,我必须通过取出电池重新启动它.如果运行此应用程序(来自Eclipse)一切正常,但当我尝试再次运行时,手机冻结和应用程序未安装.如果我尝试在第二次运行之前手动卸载此应用程序,请再次手机冻结.这是一个有问题的代码:

private final BluetoothDevice mmDevice;
private UUID uuid;

public ConnectionThread(BluetoothDevice device) {
    Log.d(TAG, "create ConnectionThread");

    uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 
    BluetoothSocket tmp = null;
    mmDevice = device;

    try {
        tmp = mmDevice.createRfcommSocketToServiceRecord(uuid);
    } catch (IOException e) { }
    mmSocket = tmp;
    socketConnected = true;
}
Run Code Online (Sandbox Code Playgroud)

这是线程的构造函数.当我评论这条线

    tmp = mmDevice.createRfcommSocketToServiceRecord(uuid);
Run Code Online (Sandbox Code Playgroud)

手机没有冻结所以问题是创建套接字(不连接).每次调试或运行后重启手机都很烦人,我还要做很多工作.

如果我从手机(与Eclipse断开连接)运行此应用程序,它可以正常工作.任何想法可能是一个问题或如何解决它?谢谢.

java sockets android bluetooth rfcomm

9
推荐指数
1
解决办法
814
查看次数

Windows 8上的WP7 SDK

是否可以在Windows 8 Release Preview上安装WP7 SDK?我尝试使用标准安装包但不断收到以下错误:

安装要求:

KB2669191不适用,或被计算机上的其他条件阻止. 有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=225649.

我安装了WP7 SDK 7.1,但在instaa中有一些兼容的错误.现在我可以为WP7启动VS2010但由于以下错误而无法构建解决方案:

项目中不存在目标"GetCopyToOutputDirectoryContentProjectItems".

windows-phone-7 windows-8

8
推荐指数
2
解决办法
7224
查看次数

为什么List(Of T)没有Count()?

Public Class MyList
    Inherits List(Of MyObject)

    Public ReadOnly Property SelectedCount() As Integer
        Get
            Return Me.Count(Function(obj) obj.IsSelected)
        End Get
    End Property
End Class
Run Code Online (Sandbox Code Playgroud)

上面的代码导致编译时错误.如您所见,我正在尝试使用扩展方法Count(<predicate>).我猜错误是因为List类本身中也存在类似命名的属性Count ,隐藏了扩展成员.

我的问题是:

  1. 我是否需要将我的类显式地转换为其他内容才能访问Count扩展方法?如果是这样,在上述场景中究竟应该是哪个类?

  2. 为什么编译器不能从使用中推断出我所指的方法而不是属性?

  3. 考虑到这是一种使用频繁的方法(有时可能被称为每秒数百次),铸造是否会产生很大的开销?

  4. 在这方面C#是否比VB.NET更好?

如果有事可做,我正在使用带有VS2010的.NET 4.0.

编辑

错误信息:

' Public ReadOnly Property Count As Integer'没有参数,其返回类型无法编入索引.

.net linq vb.net extension-methods

8
推荐指数
3
解决办法
815
查看次数

在c#中调用泛型方法

考虑以下代码:

static void Main(string[] args)
{
   Get<Student>(new Student());
    System.Console.Read();
}

public static void Get<T>(T person)
{
    Console.WriteLine("Generic function");
}
public static void Get(Person person)
{
    person.Show();
}
Run Code Online (Sandbox Code Playgroud)

这是我的人类:

class Person
{
    public void Show()
    {
        Console.WriteLine("I am person");
    }
}
class Student : Person
{
    public new void Show()
    {
        Console.WriteLine("I am Student");
    }
}
Run Code Online (Sandbox Code Playgroud)

我打电话Get给学生并通过该方法.就像这样:

 Get<Student>(new Student());
Run Code Online (Sandbox Code Playgroud)

所以我明白了:Generic function但是我打电话的时候Get是这样的:

 Get(new Student());
Run Code Online (Sandbox Code Playgroud)

我希望这Get(Person person)可以被调用Get<T>(T person).但是再次打电话:.为什么编译器有这种行为?

c#

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

无法推断出Action <T>中的类型参数,但是可以从Func <T>中推断出来

我一直在玩仿制药和代表,我发现了一些我不理解的东西.我有非常相似的通用静态方法,一个接受Action<T>,第二个接受Func<T>.现在的问题是:如果我在Func<T>没有显式类型的情况下调用那个接受,编译器就可以了.但是接受Action<T>我的程序的人无法编译(请参阅错误消息的代码).

我的问题是:为什么编译器能够识别返回类型,但是无法识别参数类型?

public interface IMessage
{ }

public class Message : IMessage
{
}
Run Code Online (Sandbox Code Playgroud)
static void HandleAction<TMessage>(Action<TMessage> action)
    where TMessage : IMessage
{ }

static void HandleFunction<TMessage>(Func<TMessage> action)
    where TMessage : IMessage
{ }

static void A(Message message)
{ }

static Message F()
{
    return new Message();
}

static void Main(string[] args)
{
    // this one is ok
    HandleFunction(F);

    // compiler error:
    // The type arguments for method
    // 'template_test.Program.HandleAction<TMessage>(System.Action<TMessage>)' 
    // cannot …
Run Code Online (Sandbox Code Playgroud)

c# generics delegates

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

无法将类型为'System.Collections.Generic.List`1 [System.Decimal]'的对象强制转换为'System.IConvertible'

var itemlist = (from u in db.getitems
                select u).ToList();

var item= new EstimatesModel
             {
                 id = Convert.ToInt64(estimatelist.id),
                 expiry_date = estimatelist.expiry_date,
                 terms_conditions = estimatelist.terms_conditions,
                 rate = Convert.ToDecimal(itemlist.Select(m =>m.taxrate).ToList())

             };

return View(item);
Run Code Online (Sandbox Code Playgroud)

在这个查询中注意,速率有多个来自getitems哪里rateDecimal类型的项目,所以我转换了它.

然后我就单一的实体返回视图item,其中仅列rateList.

但我在调试时收到此错误 -

无法将类型为"System.Collections.Generic.List`1 [System.Decimal]"的对象强制转换为"System.IConvertible".

我将在视图页面中使用此类 -

@for (int i = 0; i < Model.rate; i++)
{
    <ul>
        <li><a href="#">@i</a></li>
    </ul>
}
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net-mvc

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

IEnumerable <T> .Reverse&List <T> .Reverse之间的区别

为什么IEnumerable<T>.Reverse()返回带有原始集合的List<T>反转集合并反转原始集合本身?这对我来说有点困惑,因为List<T>继承自IEnumerable<T>.

c# generic-collections

8
推荐指数
2
解决办法
2091
查看次数

MsBuild 15中的每条TargetFramework条件

使用新的MsBuild版本,很容易在.csproj项目中定位多个框架和框架版本:

<TargetFrameworks>net40;net45;net461;netcoreapp1.1</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)

现在,我如何获得为每个定义的常量,以便我可以让某些代码只是例如netcoreapp1.1pass而不是完整框架编译的一部分?

我希望能够像这样添加一个预处理器指令:

#if NET_CORE
    // some code
#endif
Run Code Online (Sandbox Code Playgroud)

对于完整的.NET Framework和可能的.NET Standard也是如此.

我发现的其他问题没有采用新<TargetFrameworks>方法将框架定义为帐户.像这样的东西不起作用:

<DefineConstants Condition=" '$(TargetFramework)' == '.NETCoreApp' ">NET_CORE</DefineConstants>
Run Code Online (Sandbox Code Playgroud)

.net msbuild .net-core

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

在依赖类型'Bd.Domain.Entities.FootballGame'上找不到导航属性'FootballGame'

我正在创建我的第一个asp.net mvc3应用程序.我正在使用代码优先方法.我有以下型号:

public class FootballGame
{
    [Key]
    public Guid id_FootballGame { get; set; }

    [ForeignKey("FootballGame")]
    public Guid? FK_id_FootballGame { get; set; }
    public virtual FootballGame PreviousFootballGame { get; set; }

    [ForeignKey("FootballTeam")]
    public Guid id_FootballTeam_owner { get; set; }
    public virtual FootballTeam FootballTeamOwner { get; set; }

    [ForeignKey("FootballTeam")]
    public Guid id_FootballTeam_guest { get; set; }
    public virtual FootballTeam FootballTeamGuest { get; set; }
}

public class FootballTeam
{
    [Key]
    public Guid id_FootballTeam { get; set; }
    public string teamName { get; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first

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

如何从声明为IEnumerable <T>的方法/属性中安全地返回List <T>?

假设我有IEnumerable<int>使用List<int>字段支持的属性,所以我可以在类中修改集合,但它是以只读方式公开公开的.

public class Foo
{
    private List<int> _bar = new List<int>();

    public IEnumerable<int> Bar
    {
        get { return _bar; }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是使用这样的代码,您可以轻松地将从属性中检索到的对象转换回List<int>并修改它:

var foo = new Foo();
var bar = (List<int>)foo.Bar;
bar.Add(10);
Run Code Online (Sandbox Code Playgroud)

问题是:什么是最好的(最好的可读性,最容易编写,没有性能损失)避免这种情况的方法?

我可以提出至少4个解决方案,但不是它们是完美的:

  1. foreach并且yield return:

    public IEnumerable<int> Bar
    {
        get
        {
            foreach (var item in _bar)
                yield return item;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    -写作和阅读真的很烦人.

  2. AsReadOnly():

    public IEnumerable<int> Bar
    {
        get { return _bar.AsReadOnly(); }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    +当有人试图修改返回的集合时+ …

c# ienumerable list

7
推荐指数
1
解决办法
801
查看次数