Questions tagged «anonymous-types»

匿名类型是一种数据类型,它可以将一组属性动态添加到单个对象中,而不必首先显式定义一个类型

8
匿名类可以实现接口吗?
是否可以使用匿名类型实现接口? 我有一段我想工作的代码,但是不知道该怎么做。 我有几个答案,要么说不,要么创建一个实现接口的类,以构造新的实例。这并不是很理想,但是我想知道是否有一种机制可以在接口顶部创建一个精简的动态类,从而简化这一过程。 public interface DummyInterface { string A { get; } string B { get; } } public class DummySource { public string A { get; set; } public string C { get; set; } public string D { get; set; } } public class Test { public void …

22
匿名类的通用列表
在C#3.0中,您可以使用以下语法创建匿名类 var o = new { Id = 1, Name = "Foo" }; 有没有一种方法可以将这些匿名类添加到通用列表中? 例: var o = new { Id = 1, Name = "Foo" }; var o1 = new { Id = 2, Name = "Bar" }; List<var> list = new List<var>(); list.Add(o); list.Add(o1); 另一个例子: List<var> list = …

8
如何将C#匿名类型序列化为JSON字符串?
我正在尝试使用以下代码将匿名类型序列化为JSON: var serializer = new DataContractJsonSerializer(thing.GetType()); var ms = new MemoryStream(); serializer.WriteObject(ms, thing); var json = Encoding.Default.GetString(ms.ToArray()); 但是,执行此操作时,出现以下异常: 类型'<> f__AnonymousType1`3 [System.Int32,System.Int32,System.Object []]'无法序列化。考虑使用DataContractAttribute属性标记它,并使用DataMemberAttribute属性标记要序列化的所有成员。有关其他受支持的类型,请参见Microsoft .NET Framework文档。 据我所知,我不能将属性应用于匿名类型。是否有另一种方法来执行此序列化,或者我缺少什么?


8
LINQ选择与匿名类型不同
所以我有一个对象集合。确切的类型并不重要。因此,我要从中提取一对特定属性的所有唯一对,从而: myObjectCollection.Select(item=>new { Alpha = item.propOne, Bravo = item.propTwo } ).Distinct(); 所以我的问题是:在这种情况下,Distinct会使用默认的对象等于(对我来说是无用的,因为每个对象都是新的)还是可以被告知做不同的等于(在这种情况下,等于Alpha和Bravo的值) =>相等的实例)?如果没有做到这一点,有什么方法可以实现?

10
如何传递匿名类型作为参数?
如何将匿名类型作为参数传递给其他函数?考虑以下示例: var query = from employee in employees select new { Name = employee.Name, Id = employee.Id }; LogEmployees(query); query这里的变量没有强类型。我应该如何定义LogEmployees要接受的功能? public void LogEmployees (? list) { foreach (? item in list) { } } 换句话说,我应该用什么代替?商标。

5
如何在C#中访问匿名类型的属性?
我有这个: List<object> nodes = new List<object>(); nodes.Add( new { Checked = false, depth = 1, id = "div_" + d.Id }); ...而且我想知道是否可以再获取匿名对象的“ Checked”属性。我不确定这是否可能。尝试这样做: if (nodes.Any(n => n["Checked"] == false)) ...但是它不起作用。 谢谢

15
在C#中返回匿名类型
我有一个返回匿名类型的查询,并且该查询在方法中。你怎么写这个: public "TheAnonymousType" TheMethod(SomeParameter) { using (MyDC TheDC = new MyDC()) { var TheQueryFromDB = (.... select new { SomeVariable = ...., AnotherVariable = ....} ).ToList(); return "TheAnonymousType"; } }

3
如何动态创建新的匿名类?
在C#3.0中,您可以使用以下语法创建匿名类 var o1 = new { Id = 1, Name = "Foo" }; 有没有办法动态地将这些匿名类创建为变量? 例: var o1 = new { Id = 1, Name = "Foo" }; var o2 = new { SQ = 2, Birth = DateTime.Now }; 动态创建示例: var o1 = DynamicNewAnonymous(new NameValuePair("Id", 1), new NameValuePair("Name", "Foo")); var …

8
C#“动态”无法访问在另一个程序集中声明的匿名类型的属性
只要我ClassSameAssembly在与类相同的程序集中具有类,则下面的代码运行良好Program。但是,当我将类ClassSameAssembly移到单独的程序集时,将RuntimeBinderException抛出一个(见下文)。有可能解决吗? using System; namespace ConsoleApplication2 { public static class ClassSameAssembly { public static dynamic GetValues() { return new { Name = "Michael", Age = 20 }; } } internal class Program { private static void Main(string[] args) { var d = ClassSameAssembly.GetValues(); Console.WriteLine("{0} is {1} years old", d.Name, d.Age); } …

7
将Dictionary <string,object>转换为匿名对象?
首先,为了使事情更清楚,我将从顶部解释我的情况: 我有一个具有以下签名的方法: public virtual void SendEmail(String from, List&lt;String&gt; recepients, Object model) 我想做的是生成一个匿名对象,该对象具有模型对象的属性以及前两个参数。将模型对象展平为PropertyInfo []非常简单。因此,我想到了创建一个字典,该字典将保存PropertyInfo和前两个参数,然后将其转换为匿名对象,其中键是属性的名称,值是属性的实际值。 那可能吗?还有其他建议吗?

9
在C#中将匿名类型转换为键/值数组?
我有以下匿名类型: new {data1 = "test1", data2 = "sam", data3 = "bob"} 我需要一种可以接受此方法的方法,并在数组或字典中输出键值对。 我的目标是将其用作HttpRequest中的发布数据,因此我最终将连接到以下字符串中: "data1=test1&amp;data2=sam&amp;data3=bob"

11
有没有办法从方法返回匿名类型?
我知道我不能写这样的方法: public var MyMethod() { return new{ Property1 = "test", Property2="test"}; } 否则我可以这样做: public object MyMethod() { return new{ Property1 = "test", Property2="test"} } 但是我不想做第二种选择,因为如果这样做,我将不得不使用反射。 为什么我要这样做: 今天,我在aspx页面中有一个方法,该方法返回一个数据表作为结果,但我无法更改它,我试图将此DataTable转换为具有我要使用的属性的Anonymous方法。我不想只创建一个类来做到这一点,因为我将需要多次执行同一查询,所以我认为创建一个返回匿名类型的方法将是一个很好的想法。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.