c# - 将匿名类型变量作为方法参数传递

标签 c# types anonymous

我有两个类 A 和 B,我想通过另一个类中的方法 Separation() 传递 var 类型变量。我进行了一些转换,但收到 InvalidCastException 错误。请问您知道如何解决这个问题吗?

Class A{
       var products =from u in XDoc.Descendants("product")
            select new
            {
                Urunkod = u.Element("productId"),
                                UrunAdi = u.Element("title"),
            };

         XmlUrun.Separate(products);
       }

Class B{
            internal static void Separate(object products)
            {
                var o2 = CaseByExample(products, new
                {
                    Urunkod = "",
                    UrunAdi = "",
                });
            }
            public static T CaseByExample<T>(this object o, T type)
            {
                return (T)o;
            }
        }  

最佳答案

匿名类型不能在单个方法的范围之外以强方式传递,因为无法在方法的范围之外表示它。

您可以使用动态类型(我不推荐),或创建一个命名类来表示该类型(我推荐)。

public class A
{
    public void Foo()
    {
        var products =from u in XDoc.Descendants("product")
        select new C
        {
            Urunkod = u.Element("productId"),
                            UrunAdi = u.Element("title"),
        };
    }
}

public class B
{
    public void Bar(IEnumerable<C> cList)
    {
        foreach(var c in cList)
            Console.WriteLine(c.Urunkod);
    }
}

public class C
{
    public XElement Urunkod {get;set;}
    public XElement Urunkadi {get;set;}
}

关于c# - 将匿名类型变量作为方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9765990/

相关文章:

c# - 从数据库加载 map 范围内的坐标

types - 如何在模式匹配的每个分支中返回不同类型的值

java - Jenkins 运行被匿名 : The user id should be always non-null thanks to DefaultUserCanonicalIdResolver 中止

c++ - 通过引用传递匿名变量

java - 如何从匿名内部类中获取值(value)?

c# - 使用 `DataContractSerializer` 序列化包含 WPF 画笔的类

c# - 使用官方 C# 驱动程序更新 MongoDB 中的嵌入式文档

c# - 完整的 if/else 语句与条件运算符

python - 不支持的操作数类型 - : 'str' and 'datetime.datetime'

Java 类型转换和变量类型赋值