小编l33*_*33t的帖子

免费和付费版Android应用程序的最佳方法?

我开发了一款Android应用程序,我希望它既可以免费也可以付费.什么是最好的方法?

我可以想到三个解决方案:

  1. 将项目拆分为两个分支并维护它们.
  2. 创建一个库项目,并有两个额外的项目,一个是"免费",另一个是"付费".
  3. 使用应用内结算.

问:哪种解决方案最好?为什么?

有些事情需要考虑:

  • 我的应用程序大约1.5 MB(不包括AdMob).
  • 我目前正在瞄准Android 2.2(Froyo).
  • 我确实有一些服务器API,可以从知道客户是否付款中受益.
  • 我试图避免我的应用程序被破解.这些天不确定这是否真的存在问题......

android version in-app-billing

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

如果只有一个元素,将List <T>转换为T项?

我有List<>N个项目.我想得到第一个元素当且仅当N = 1.这可以使用lambda或其他一些好的构造来完成吗?

这有效,但看起来很糟糕:

var blah = new List<Object>() { new Object() };
var item = (blah.Count == 1 ? blah[0] : null);
Run Code Online (Sandbox Code Playgroud)

c# lambda

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

检测圆圈A是否完全位于圆圈B内

下面是一个检测两个圆是否相交的函数.我想将其更改为仅检测圆圈的periferi是否相交.因此,如果圆圈A 完全在圆圈B内,则没有碰撞!

怎么样?

private bool IsCircleCollision(
    int x1, int y1, int radius1,
    int x2, int y2, int radius2)
{
    int dx = x2 - x1;
    int dy = y2 - y1;

    int distance = (dx * dx) + (dy * dy);

    int radii = radius1 + radius2;
    if (distance < radii * radii)
    {
        return true;
    }
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# math geometry collision-detection

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

我为什么要使用连接池?

在我的C#应用​​程序中,我连接到MySQL数据库并运行10,000个查询.如果我保持与数据库的连接,这些查询大约需要14秒.但是,如果我依赖连接池,我的查询大约需要15秒.(我已多次运行此测试.)

// Connection pooling.
using (var connection = CreateConnection())
{
    connection.ConnectionString = ConnectionString;
    connection.Open();
Run Code Online (Sandbox Code Playgroud)

网上的大多数样本都使用上面的"连接和关闭"结构.但是,似乎连接池比保持连接慢.所以问题是......

问:我为什么要使用连接池?

c# mysql connection-string connection-pooling

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

在SQL Server执行之前修补过时的SQL查询?

运行SQL Server 2005.一个软件与我们的数据库集成.不幸的是,他们选择直接进行SQL查询而不是使用存储过程.现在我们已经更改了我们的数据库方案,并且有问题的查询不再有效.

是否可以在SQL Server上运行时修补T-SQL?

例如,当SQL Server获取SELECT A FROM InvalidTable特定数据库时,查询将SELECT A FROM ValidTable在执行之前转换为.

编辑: 这是有问题的查询:

SELECT * FROM DataTable c JOIN Users u ON u.UserName = @P0 AND c.DepartmentID = b2.DepartmentID WHERE c.Status = 0哪里DepartmentID搬到了另一张桌子!

sql sql-server patch runtime

3
推荐指数
1
解决办法
88
查看次数

如何在Android中的View.Canvas上缩放位图?

我有一个View派生类,在那里我绘制一个790x500(是的,这很奇怪,但它必须保持这种方式)直接在画布上的位图onDraw.这在我的Nexus S上看起来不错,但是当我在具有较小屏幕的设备上运行我的应用程序(例如Wildfire)时,我只看到位图的左上角部分.我在这里错过了什么?

这是一个类似游戏的应用程序,我在某些坐标上绘制了许多位图.我真的不想为LDPI,MDPI和HDPI设置不同的像素设置(我有充分的理由).

问:如何针对任何屏幕分辨率正确缩放我的位图?(将屏幕的游戏屏幕居中可能是一个选项,但不是必须的.)例如,当我在320x240屏幕上绘制800x600图像时,图像会自动拉伸,当我以100x100输出像素时,它会变为40x40.

android resolution bitmap scale

3
推荐指数
1
解决办法
6276
查看次数

立即返回IEnumerable <T>或转换为List <T>?

我正在设计一个带有几个返回对象列表的函数的类.我注意到,当我IEnumerable<T>转换为a 时,调试变得更容易,List<T>因为可以在Watch窗口中查看对象.但是,我不确定这是否是最佳做法IEnumerable.

问:哪个更好?

public IEnumerable<MyData> GetData()
{
    return Foo();
}

public IEnumerable<MyData> GetData()
{
    return Foo().ToList();
}
Run Code Online (Sandbox Code Playgroud)

c# ienumerable

3
推荐指数
1
解决办法
847
查看次数

将 Expression&lt;Func&lt;T, U&gt;&gt; 转换为 Expression&lt;Func&lt;object, object&gt;&gt;

我有一个LambdaExpression类型为Expression<Func<T, string>>. 代码的设计目前不允许我保留T,这意味着我被迫使用较慢的DynamicInvoke而不是Invoke.

因为我知道T我想要转换表达式的类型,以便它接受一个T对象,允许我使用Invoke. 如何?

这是一个好的开始

class Program
{
    class MyClass
    {
        public string MyProperty => "Foo";
    }

    static LambdaExpression GetExpression(Expression<Func<MyClass, object>> expr)
    {
        return expr;
    }

    static void Main(string[] args)
    {
        var e1 = GetExpression(t => t.MyProperty);
        var e2 = Expression.Lambda<Func<object, object>>(e1, e1.Parameters);

        object myClass = new MyClass();
        string s1 = (string)e1.Compile().DynamicInvoke(myClass);
        object s2 = e2.Compile().Invoke(myClass);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# lambda expression-trees

3
推荐指数
1
解决办法
1788
查看次数

从 MsBuild 定义 C# 预处理器

在我的C#文件中,我想要这样的预处理器条件:

#if DEMO
    ShowSplash();
#endif
Run Code Online (Sandbox Code Playgroud)

我正在从命令行运行此命令:

MSBuild MySolution.sln /p:Configuration=Release /p:Platform="Any CPU" /p:DEMO=1
Run Code Online (Sandbox Code Playgroud)

然后,在MyProject.csproj文件中我有以下内容:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DefineConstants>TRACE;DEMO=$(DEMO)</DefineConstants>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

但预处理器似乎跳过了我的启动代码。(我知道“Any CPU”和“AnyCPU”之间的区别。我从未接触过它,所以我很确定 Visual Studio 不关心空间。)

DEMO没有定义?相同的构造似乎适用于其他项目类型(例如.wixproj我在这里缺少什么?

c# msbuild

3
推荐指数
1
解决办法
4491
查看次数

重用 Viewbox 资源

运行 Visual Studio 2017 并面向 .NET 4.6.1。考虑XAML以下。在 XAML 编辑器中,您会看到两个圆圈,但在运行应用程序时仅显示第二个圆圈。

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Window.Resources>
        <Viewbox x:Key="MyBox" Stretch="Uniform">
            <Ellipse Width="4" Height="4" Fill="Red"/>
        </Viewbox>
    </Window.Resources>
    <StackPanel>
        <ContentPresenter Width="100" Content="{StaticResource MyBox}"/>
        <ContentPresenter Width="100" Content="{StaticResource MyBox}"/>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

如何重用Viewbox资源?

wpf

3
推荐指数
1
解决办法
1213
查看次数