我有两个类 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/