小编naw*_*fal的帖子

如何确定Type是否为struct?

给定一个PropertyInfo具有Type属性的实例,如何确定它是否为结构?我发现有一些属性,如IsPrimitive,IsInterface等,但我不知道如何要求结构?

编辑: 澄清问题.假设我有一个方法:

public Boolean Check(PropertyInfo pi)
{
   return pi.Type.IsStruct;
}
Run Code Online (Sandbox Code Playgroud)

我写什么而不是IsStruct

.net c# struct types

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

String.IndexOf方法的表达式树

我该如何构建表达式树string.IndexOf("substring", StringComparison.OrdinalIgnoreCase)

没有第二个论点,我可以让它工作:StringComparison.OrdinalIgnoreCase.这些是我到目前为止的尝试:

var methodCall = typeof (string).GetMethod("IndexOf", new[] {typeof (string)});
Expression[] parms = new Expression[]{right, Expression.Constant("StringComparison.OrdinalIgnoreCase", typeof (Enum))};
var exp =  Expression.Call(left, methodCall, parms);
return exp;
Run Code Online (Sandbox Code Playgroud)

还试过这个:

var methodCall = typeof (string).GetMethod(method, new[] {typeof (string)});
Expression[] parms = new Expression[]{right, Expression.Parameter(typeof(Enum) , "StringComparison.OrdinalIgnoreCase")};
var exp =  Expression.Call(left, methodCall, parms);
return exp;
Run Code Online (Sandbox Code Playgroud)

请记住,如果我忽略OrdinalIgnoreCase参数,我可以使它工作.

谢谢

c# reflection expression-trees linq-expressions

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

获取winforms应用程序名称的正确方法是什么?

我能做到这一点:

return Assembly.GetEntryAssembly().GetName().Name;
Run Code Online (Sandbox Code Playgroud)

要么

return Path.GetFileNameWithoutExtension(Application.ExecutablePath);
Run Code Online (Sandbox Code Playgroud)

既能得到所需要的应用程序名称始终?如果是这样,这是获取应用程序名称的更标准方法?如果它仍然是一个不赢的局面,有什么比一种方法更快的速度吗?或者还有其他正确的方法吗?

谢谢.

c# .net-assembly application-name winforms executable-path

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

TreeMap,HashMap和LinkedHashMap的性能?

在TreeMap中 - 元素
在HashMap 中排序- 元素未排序

所以,如果我认为get,putremove方法这地图,我应该使用的性能?

java performance map

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

获取MySQL安装路径

我需要获取MySQL的安装路径,以便通过java代码执行导出和导入数据库.目前正在使用eclipse.我需要在String变量"mySqlPath"中获取安装路径.

File fMysqlPath = new File("C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\");
String executeCmd = "mysqldump -u " + Constants.DB_USER + " -p" + 
                    Constants.DB_PASSWORD + " " + Constants.DB_NAME + " -r " + 
                    FilePath + "\\" + FileName;
Process runtimeProcess = Runtime.getRuntime().exec(executeCmd, null, fMysqlPath);
Run Code Online (Sandbox Code Playgroud)

这就是我所做的.这有依赖性问题.

我怎么解决这个问题?

java mysql installation-path

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

如何在WHERE子句中使用实际行计数(COUNT(*))而不编写与子查询相同的查询?

我有这样的事情:

SELECT id, fruit, pip 
FROM   plant 
WHERE  COUNT(*) = 2;
Run Code Online (Sandbox Code Playgroud)

我想这个奇怪的查询是自我解释的.COUNT(*)这里表示plant表中的行数.我的要求是,只有当table = 2中的总行数时,才需要从指定字段中检索值.这不起作用,但是:invalid use of aggregate function COUNT.

我不能做到这一点:

SELECT COUNT(*) as cnt, id, fruit, pip 
FROM   plant 
WHERE  cnt = 2;
Run Code Online (Sandbox Code Playgroud)

例如,它将输出的行数限制为1和2,它给出了相同的错误:invalid use of aggregate function.

我能做的是:

SELECT id, fruit, pip 
FROM   plant 
WHERE  (
        SELECT COUNT(*) 
        FROM   plant
       ) = 2;
Run Code Online (Sandbox Code Playgroud)

但是那个子查询是重新运行的主要查询.我在这里展示了问题的大部分的一个小例子,虽然我知道COUNT(*)给定示例中的另一个子查询并不是那么大的开销.

编辑:我不知道为什么这个问题被downvoted.在COUNT(*)我想要得到的是从查询的图(临时表),这是5至6联接和额外的where子句大型查询.要将查询作为子查询重新运行以获取计数是低效的,我也可以看到瓶颈.

这是实际的查询:

SELECT U.UserName, E.Title, AE.Mode, AE.AttemptNo, 
   IF(AE.Completed = 1, 'Completed', …
Run Code Online (Sandbox Code Playgroud)

mysql sql sqlite count

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

MVC 4 Simple Populate DropDown from database model

我觉得有点傻.

我试图获得一个MVC 4,使用拳击作为一个功能的例子.

我有WeightCategories数据库(Heavyweights等),和Boxers.

似乎很简单.关系是一个拳击手有一个当前的重量类别,但是当我编辑时,我希望它能够通过下拉来改变它.

如果它是我在代码中自己创建的列表,我理解如何做到这一点,但是我有理解如何从WeightCategory表中"加载"列表并在拳击手的视图/模型中显示它的问题.

所以,这是我的WeightCategory项目代码:

[Table("WeightCategories")]
public class WeightCategory
{
    [Key]
    public int WeightCategoryId { get; set; }

    public WEIGHT_CATEGORIES WeightCategoryType { get; set; }

    [Display(Name = "Weight Category Name")]
    [Required]
    [MinLength(5)]
    public string Name { get; set; }
    [Display(Name = "Weight Limit In Pounds")]        
    public int? WeightLimit { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是拳击手项目的代码

[Table("Boxers")]
public class Boxer
{
    [Key]
    public int BoxerId { get; set; }

    public …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework asp.net-mvc-4

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

为什么C#中的类没有循环布局问题?

public struct Unit
{
    Unit u;
}
Run Code Online (Sandbox Code Playgroud)

原因:

类型为"单位"的结构成员"Unit.u"会在结构布局中生成一个循环.

public class Unit
{
    Unit u;
}
Run Code Online (Sandbox Code Playgroud)

编译.我理解我认为的问题.引用Unit对象时将形成无限循环,因为它必须初始化另一个成员Unit,依此类推.但是为什么编译器只是为了限制问题structs呢?这个问题也不存在class吗?我错过了什么吗?

c# struct class circular-dependency cyclic-reference

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

调用泛型类构造函数的困境

我有这个通用的单例看起来像这样:

public class Cache<T>
{
    private Dictionary<Guid, T> cachedBlocks;

    // Constructors and stuff, to mention this is a singleton

    public T GetCache(Guid id)
    {
        if (!cachedBlocks.ContainsKey(id))
            cachedBlocks.Add(id, LoadFromSharePoint(id))
        return cachedBlocks[id];
    }

    public T LoadFromSharePoint(Guid id)
    {
        return new T(id)    // Here is the problem.
    }
}
Run Code Online (Sandbox Code Playgroud)

错误消息是:

无法创建类型为T的实例,因为它没有new()约束.

我必须提到我必须传递该id参数,并且没有其他方法可以这样做.任何关于如何解决这个问题的想法都将受到高度赞赏.

c# generics constructor initialization

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

GetGetMethod方法和GetMethod属性之间的区别?

.Net 4.5将PropertyInfo.GetMethod作为PropertyInfo类的属性.它在做什么不同于PropertyInfo.GetGetMethod方法吗?文档页面几乎为空白.我能找到的唯一区别是GetGetMethod默认情况下仅返回公共getter,而GetMethod返回甚至非公共getter(同样通过它实现GetGetMethod(true)).

类似地,.NET 4.5中有GetSetMethod方法和SetMethod属性.它为什么在.NET中引入?

.net accessor propertyinfo getter-setter .net-4.5

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