草庐IT

代表匿名内部类的 Android Studio

全部标签

匿名类型中的 C# 方法初始化

我正在浏览Sam的LINQUnleashedforC#并在第7页列出:Anonymoustypescanbeinitializedtoincludemethods,butthesemightonlybeofinteresttolinguists.我真的不明白语言学家的评论是不是在开玩笑。无论如何,在C#中做这样的事情是可能的varobj=new{Name="Joe",Weight=200,GetAge=newFunc(()=>{return43;})};现实生活中有没有人遇到过需要在匿名类型中定义函数的情况?或者这只是没有实际应用的类型推断的结果? 最佳答案

c# - 使用 GetHashCode 比较相同的匿名类型是否安全?

给定两个相同的匿名类型对象:{msg:"hello"}//anonType1{msg:"hello"}//anonType2并假设它们没有解析为同一类型(例如,它们可能在不同的程序集中定义)anonType1.Equals(anonType2);//false此外,假设在编译时,我无法获取一个结构(例如anonType1),因为API仅公开object所以,为了比较它们,我想到了以下技巧:使用反射获取anonType1上的msg属性进行比较。将anonType1转换为dynamic类型并在动态成员上引用.msg以进行比较比较每个对象上.GetHashCode()的结果。我的问题是:使用

c# - 动态设置 C# 匿名类型的属性名称

有没有办法动态设置匿名类型的属性名?通常我们会这样做:varanon=new{name="Kayes"};现在我想动态设置属性的名称(或标识符),以便该名称可以来自XML文件或数据库。谢谢大家的回答。不,我的需要绝对不值得所有繁琐的选择。我只是想让我的代码符合我的团队领导开发的现有库。但我们决定更新库以支持字典类型,以便轻松解决。Pete,我很高兴了解.NET4.0中的动态类型谢谢。 最佳答案 这是不可能的,因为即使类型是匿名的,它也不是动态类型。它仍然是静态类型,并且必须在编译时知道有关它的属性。您可能想查看.NET4.0“dyn

c# - 我如何在C#中模拟匿名类

我正在用C#编写一个小型数据结构库,但遇到了架构问题。本质上我有一个实现访问者模式的类,访问者有许多可能的实现:publicinterfaceITreeVisitor{UVisit(Nils);UVisit(Nodes);}publicabstractclassTree:IEnumerable{publicreadonlystaticTreeempty=newNil();publicabstractUAccept(ITreeVisitorvisitor);}publicsealedclassNil:Tree{publicoverrideUAccept(ITreeVisitorvisit

c# - 是否可以有一个匿名类型的条件字段

我有一些代码看起来像这样,并从现有集合中创建一个列表varitems=items.ConvertAll(r=>new{description=FormatDescription(r),start=r.Milestone.HasValue?r.Milestone.Value.ToString("yyyy-MM-ddTHH:mm:ssZ"):DateTime.Today.ToString("yyyy-MM-ddTHH:mm:ssZ"),classname="significance"+r.SignificanceLevel,如您所见,如果我现在没有开始日期(r.Milestone),那么我

c# - WP7.1 上的匿名类型和获取访问器?

我正在尝试编写一个简单的对象到字典转换器,如下所示:publicstaticclassSimplePropertyDictionaryExtensionMethods{publicstaticIDictionaryToSimplePropertyDictionary(thisobjectinput){if(input==null)returnnewDictionary();varpropertyInfos=frompropertyininput.GetType().GetProperties(BindingFlags.Instance|BindingFlags.Public|Bindi

c# - C#中通过反射创建匿名对象

有没有办法在.NET3.5运行时通过反射创建C#3.0匿名对象?我想在我的序列化方案中支持它们,因此我需要一种以编程方式操作它们的方法。稍后进行编辑以阐明用例一个额外的限制是我将在Silverlight应用程序中运行所有这些,因此额外的运行时不是一个选项,并且不确定动态生成代码将如何工作。 最佳答案 这是另一种方式,似乎更直接。objectanon=Activator.CreateInstance(existingObject.GetType()); 关于c#-C#中通过反射创建匿名对象

c# - c# 中的匿名类型是否可以通过反射访问?

由于匿名类型的名称是编译器生成的,因此可以通过反射访问吗? 最佳答案 是的。就CLR/框架而言,它们是普通类型。事实上,你可以做一些interestingthings对匿名类型的反射(reflection)...虽然当前的C#编译器实际上创建了一个泛型类型,因此两个仅具有不同类型的“Foo”属性的匿名类型将共享一个泛型类型,但具有不同的封闭类型。 关于c#-c#中的匿名类型是否可以通过反射访问?,我们在StackOverflow上找到一个类似的问题: http

c# - 为什么 Object.Equals() 在从不同的程序集实例化时对相同的匿名类型返回 false?

我有一些代码可以将强类型业务对象映射到匿名类型,然后将其序列化为JSON并通过API公开。将我的解决方案重组为单独的项目后,我的一些测试开始失败。我做了一些挖掘,结果是Object.Equals对来自不同程序集的代码返回的匿名类型的行为不同-我不确定为什么,或者我可以做些什么来解决它。在https://github.com/dylanbeattie/AnonymousTypeEquality有完整的重现代码但实际上破坏的部分在下面。此代码在测试项目中:[TestFixture]publicclassTests{[Test]publicvoidBothInline(){vara=new{

c# - 字典的匿名集合初始值设定项

是否可以隐式声明下一个Dictionary:{urlA,new{Text="TextA",Url="UrlA"}},{urlB,new{Text="TextB",Url="UrlB"}}所以我可以这样使用它:foreach(varkindic){k.Key.Text=k.Value.Text;k.Key.NavigateUrl=k.Value.Url;}? 最佳答案 怎么样:vardict=new[]{new{Text="TextA",Url="UrlA"},new{Text="TextB",Url="UrlB"}}.ToDicti