相关疑难解决方法(0)

测试动态变量上的属性是否可用

我的情况很简单.在我的代码的某处我有这个:

dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();

//How to do this?
if (myVariable.MyProperty.Exists)   
//Do stuff
Run Code Online (Sandbox Code Playgroud)

所以,基本上我的问题是如何检查(不抛出异常)我的动态变量上有某个属性可用.我可以做,GetType()但我宁愿避免,因为我真的不需要知道对象的类型.我真正想知道的是一个属性(或方法,如果让生活更轻松)是可用的.有什么指针吗?

c# dynamic dynamic-keyword

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

寻找一种在运行时操作.Net CIL的方法

在Java中,我们使用javaagent参数和ASM(http://asm.ow2.org/)实用程序来修改类加载器在内存中运行/加载时的字节代码.(也就是动态地向类中的方法添加方法调用).

例如,您可以删除对Log4j的所有调用以加速应用程序(http://surguy.net/articles/removing-log-messages.xml).

我试图弄清楚如何使用C#/ .Net在运行时执行相同的过程.我已经看到你可以操作.Net的CIL,但我还没有在运行时找到这个例子.

System.Reflection.Emit似乎是最接近的.Net equitant,你可以在其中动态创建类,但有没有办法使用它来添加或覆盖现有的类?

.net c# java asp.net c#-4.0

6
推荐指数
1
解决办法
312
查看次数

为什么C#不包含IParsable <T>或ITryParsable <T>?

编辑:显然这是不可能的,因为C#不允许接口中的静态方法.

显然,为您自己的解决方案实现以下接口会相当简单

public interface IParsable<T>
{
    T Parse(string s);
}

public interface ITryParsable<T> : IParsable<T>
{
    bool TryParse(string s, out T output);
}
Run Code Online (Sandbox Code Playgroud)

已经写解析未知类型化的用户输入数据的各种方式,我会发现有int,decimal等,等实现一个版本,这些接口必不可少的.

对我而言,包含在System命名空间中似乎是一件相当明显的事情.

显然事实并非如此.那么查看类是否"实现"这些接口的最佳方法是什么?

通过Duck Typing检查方法是否存在似乎是一个明智的选择,但是反射并不是非常高效.

c#

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

标签 统计

c# ×3

.net ×1

asp.net ×1

c#-4.0 ×1

dynamic ×1

dynamic-keyword ×1

java ×1