jjzjj

c# - 在 C# 中比较动态对象

比较两个任意动态对象是否相等的最佳方法是什么?例如这两个对象。即dynamicobj1=newExpandoObject();obj1.Name="Marcus";obj1.Age=39;obj1.LengthInMeters=1.96;dynamicobj2=AMethodReturningADynamic();obj2.Name="Marcus";obj2.Age=39;obj2.LengthInMeters=1.96;Assert.AreEqual(obj1,obj2);//?或者有没有办法将实际属性及其值作为列表获取?例如,要从动态类型创建ExpandoObject?

c# - 为什么 dynamic 关键字不能用于动态加载的程序集?

我正在开发一个CSharp表达式求值器,您可以在下面看到它的用途。该组件生成代码并在内存中对其进行编译,然后加载生成的程序集,创建生成类的实例并运行它。结果保存在字典中。我的问题是所有运行正常,直到最后一行代码失败并出现异常:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'object'doesnotcontainadefinitionfor'FirstName'.但是,VisualStudio能够向我展示专业的变量内容:Professional={FirstName=JuanPablo,LastName=Ibañez,Cer

c# - C#4.0中如何调用动态类型的静态方法?

在C#4.0中,我们有了动态类型,但是如何调用动态类型对象的静态方法呢?下面的代码会在运行时产生异常。dynamic对象来自C#类,但它可以通过DLR来自其他语言的对象。重点不是如何调用静态方法,而是如何调用无法在C#代码中创建的动态对象的静态方法。classFoo{publicstaticintSum(intx,inty){returnx+y;}}classProgram{staticvoidMain(string[]args){dynamicd=newFoo();Console.WriteLine(d.Sum(1,3));}}恕我直言,dynamic是为了桥接C#和其他编程语言而发

c# - 动态列表<T> 类型

这个问题在这里已经有了答案:PassAnInstantiatedSystem.TypeasaTypeParameterforaGenericClass(6个答案)关闭8年前。是否可以创建一个新的ListT在运行时动态设置在哪里?干杯

c# - 创建运行时确定类型实例的最佳方法

这个问题在这里已经有了答案:HowtocreateanewobjectinstancefromaType(11个答案)关闭9年前。(在.NET4中)创建在运行时确定的类型的实例的最佳方法是什么。我有一个实例方法,尽管它作用于BaseClass对象,但它的派生类的实例可能会调用它。我需要在方法中创建另一个与this类型相同的实例。为每个派生类重载方法是不切实际的,因为它相当复杂,并且保持单一实现会更有效。publicclassBaseClass{//constructors+properties+methodsetcpublicSomeMethod(){//somecodeDerived

c# - 为什么泛型方法中的动态参数在使用对象时会抛出空引用异常?

这个问题在这里已经有了答案:Whyiscastingadynamicoftypeobjecttoobjectthrowinganullreferenceexception?(4个答案)关闭6年前。我想知道是否有人可以在这段代码中解释原因publicclassSomeClass{publicTGenericMethod(dynamicvalue){return(T)value;}}'返回值;'语句在调用时抛出空引用异常:newSomeClass().GenericMethod(newobject());//throwsSystem.NullReferenceException调用时按预期

c# - .NET 中的动态控件问题

动态控制问题大家好,我想创建一些动态控件,并让它们在页面加载期间保持它们的View状态。很简单,对吧?我所要做的就是在每次加载页面时使用相同的ID重新创建控件。但是,这里有问题-在我的PreRender事件中,我想清除控件集合,然后使用新值重新创建动态控件。这样做的原因很复杂,我可能要花一页左右的时间来解释我为什么要这样做。因此,为了简洁起见,我们假设我绝对必须这样做,而且没有其他办法。问题出现在我在PreRender事件中重新创建控件之后。重新创建的控件永远不会绑定(bind)到View状态,并且它们的值不会在页面加载期间保持不变。我不明白为什么会这样。我已经在我的OnLoad事件中

c# - F# 动态对象访问

有没有一种方法可以在F#中访问类似于C#动态的DLR对象(例如DynamicObject子类实例)成员(属性和方法)? 最佳答案 现在nuget上有一个模块使用dlr来实现动态运算符。FSharp.Interop.Dynamic与现有的许多代码片段相比,它有几个优点。它使用的性能Dynamitey对于实现缓存的dlr调用,它是一个PCL库处理返回void的方法,如果您不丢弃这些方法的结果,您将获得绑定(bind)异常。dlr会自动处理函数调用委托(delegate)返回的情况,这也将允许您对FSharpFunc执行相同的操作添加一个

C# 通过属性名称动态访问属性值

我要解决的问题是如何编写一个方法,将属性名称作为字符串接收,并返回分配给该属性的值。我的模型类声明类似于:publicclassFoo{publicintFooIdpublicintparam1publicdoubleparam2}在我的方法中,我希望做类似的事情varproperty=GetProperty("param1)varproperty2=GetProperty("param2")我目前正在尝试通过使用诸如的表达式来做到这一点publicdynamicGetProperty(string_propertyName){varcurrentVariables=m_context

c# - 带动态参数的动态 lambda 表达式

给定这个类publicclassFoo{publicstringName{get;set;}}这个方法(在其他一些类中)...privateFuncCompile(stringbody){ParameterExpressionprm=Expression.Parameter(typeof(Foo),"foo");LambdaExpressionexp=DynamicExpressionParser.ParseLambda(new[]{prm},typeof(string),body);return(Func)exp.Compile();}将获取lambda表达式的右侧并返回给我一个委托