我的情况很简单.在我的代码的某处我有这个:
dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();
//How to do this?
if (myVariable.MyProperty.Exists)
//Do stuff
Run Code Online (Sandbox Code Playgroud)
所以,基本上我的问题是如何检查(不抛出异常)我的动态变量上有某个属性可用.我可以做,GetType()但我宁愿避免,因为我真的不需要知道对象的类型.我真正想知道的是一个属性(或方法,如果让生活更轻松)是可用的.有什么指针吗?
我需要从.NET 4中使用dynamic关键字声明的对象中获取属性及其值的字典?似乎使用反射这是行不通的.
例:
dynamic s = new ExpandoObject();
s.Path = "/Home";
s.Name = "Home";
// How do I enumerate the Path and Name properties and get their values?
IDictionary<string, object> propertyValues = ???
Run Code Online (Sandbox Code Playgroud) 我有一个匿名类型对象,我从一个方法接收动态,我想检查该对象上存在的属性.
....
var settings = new {
Filename="temp.txt",
Size=10
}
...
function void Settings(dynamic settings) {
var exists = IsSettingExist(settings,"Filename")
}
Run Code Online (Sandbox Code Playgroud)
我该如何实现IsSettingExist?
我的JSON如下:
{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]}
Run Code Online (Sandbox Code Playgroud)
我找到了针对C#的Newtonsoft JSON.NET反序列化库.我尝试使用它如下:
object JsonDe = JsonConvert.DeserializeObject(Json);
Run Code Online (Sandbox Code Playgroud)
如何访问该JsonDe对象以获取所有"类型"数据?我尝试了一个循环,但它没有工作,因为该对象没有枚举器.
我有一个看起来像这样的动态对象,
{
"2" : "foo",
"5" : "bar",
"8" : "foobar"
}
Run Code Online (Sandbox Code Playgroud)
我该如何将其转换为dictionary?
我想看看C#Expando类中是否存在属性.
很像python中的hasattr函数.我想为hasattr提供c#equalant.
像这样的东西......
if (HasAttr(model, "Id"))
{
# Do something with model.Id
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个字段的动态对象上的一个属性循环,除了我无法弄清楚如何在不抛出异常的情况下安全地评估它是否存在.
foreach (dynamic item in routes_list["mychoices"])
{
// these fields may or may not exist
int strProductId = item["selectedProductId"];
string strProductId = item["selectedProductCode"];
}
Run Code Online (Sandbox Code Playgroud) 我有一个动态对象,如下所示:
this.ChartDetails.Chart
Run Code Online (Sandbox Code Playgroud)
'图表'是动态的.我想查看名为LeftYAxis的图表上是否存在动态属性.在动态对象上执行此操作的最佳方法是什么?
我不认为这是如何检测ExpandoObject上是否存在属性的重复?因为它没有讨论为动态对象执行此操作的最佳方法.
我正在尝试使用Chrome的Headless功能将html转换为pdf.但是,我根本没有得到输出.控制台也不会显示任何错误.我在windows m/c中运行命令.
chrome --headless --disable-gpu --print-to-pdf
我尝试了各种各样的选择.什么都没有产生.我有60版铬
这是我的代码:
public static class DynamicExtensions
public static void Add(this ExpandoObject obj, string path){
dynamic _obj = obj;
if (_obj == null) throw new ArgumentNullException("obj");
_obj.path = path;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我以这种方式调用它时,我得到"'System.Dynamic.ExpandoObject'的错误不包含'Add'的定义":
dynamic obj = new ExpandoObject();
obj.Add("p1");
Run Code Online (Sandbox Code Playgroud)
怎么解决?
提前致谢!