给定一个PropertyInfo具有Type属性的实例,如何确定它是否为结构?我发现有一些属性,如IsPrimitive,IsInterface等,但我不知道如何要求结构?
编辑: 澄清问题.假设我有一个方法:
public Boolean Check(PropertyInfo pi)
{
return pi.Type.IsStruct;
}
Run Code Online (Sandbox Code Playgroud)
我写什么而不是IsStruct?
我该如何构建表达式树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参数,我可以使它工作.
谢谢
我能做到这一点:
return Assembly.GetEntryAssembly().GetName().Name;
Run Code Online (Sandbox Code Playgroud)
要么
return Path.GetFileNameWithoutExtension(Application.ExecutablePath);
Run Code Online (Sandbox Code Playgroud)
既能得到所需要的应用程序名称始终?如果是这样,这是获取应用程序名称的更标准方法?如果它仍然是一个不赢的局面,有什么比一种方法更快的速度吗?或者还有其他正确的方法吗?
谢谢.
在TreeMap中 - 元素
在HashMap 中排序- 元素未排序
所以,如果我认为get,put和remove方法这地图,我应该使用的性能?
我需要获取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)
这就是我所做的.这有依赖性问题.
我怎么解决这个问题?
我有这样的事情:
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) 我觉得有点傻.
我试图获得一个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) 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吗?我错过了什么吗?
我有这个通用的单例看起来像这样:
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参数,并且没有其他方法可以这样做.任何关于如何解决这个问题的想法都将受到高度赞赏.
.Net 4.5将PropertyInfo.GetMethod作为PropertyInfo类的属性.它在做什么不同于PropertyInfo.GetGetMethod方法吗?文档页面几乎为空白.我能找到的唯一区别是GetGetMethod默认情况下仅返回公共getter,而GetMethod返回甚至非公共getter(同样通过它实现GetGetMethod(true)).
类似地,.NET 4.5中有GetSetMethod方法和SetMethod属性.它为什么在.NET中引入?
c# ×6
.net ×2
java ×2
mysql ×2
struct ×2
.net-4.5 ×1
accessor ×1
class ×1
constructor ×1
count ×1
generics ×1
map ×1
performance ×1
propertyinfo ×1
reflection ×1
sql ×1
sqlite ×1
types ×1
winforms ×1