我無法將一個匿名類型轉換爲另一個匿名類型。我想知道爲什麼。無法將一個匿名類型轉換爲另一個匿名類型
public static class Class1{
public static object GetFinance(Guid contractB2CId)
{
return new
{
Item1 = reader.ValueOrDefault<decimal>(0),
Item2 = reader.ValueOrDefault<decimal>(1),
Item3 = reader.ValueOrDefault<decimal>(2),
Item4 = reader.ValueOrDefault<decimal>(3),
Item5 = reader.ValueOrDefault<decimal>(4),
Item6 = reader.ValueOrDefault<decimal>(5)
};
}
object obj = GetFinance();
var financeInfo = obj.UnsafeCast(new
{
Item1 = default(decimal),
Item2 = default(decimal),
Item3 = default(decimal),
Item4 = default(decimal),
Item5 = default(decimal),
Item6 = default(decimal)
});
}
public static class Class2{
public static T UnsafeCast<T>(this object obj, T type)
{
return (T) obj;
}
}
異常
無法轉換 類型「<> f__AnonymousType1
6[System.Decimal,System.Decimal,System.Decimal,System.Decimal,System.Decimal,System.Decimal]' to type '<>f__AnonymousType0
6 [System.Decimal,System.Decimal,System.Decimal,System.Decimal,System.Decimal,系統的目的.Decimal]」。
UPDATE: 有什麼辦法避免這種例外,除了使用Tuple<decimal.....>
或使用一個組裝?
我的代碼位於不同的程序集中。我認爲這是例外的原因。 – Alexandre
如果這些類型在同一個程序集中,那麼這個類型是多餘的,所以是的。但是,除非你正在施放對象或其他重複施放(施放爲相同類型),否則使用匿名類型施放時將失去運氣 –
@Alex如果它位於不同的裝配體中,則我知道***它是原因。匿名類型的類型等價只適用於同一個程序集。考慮使用一個命名類型 - 也許是'Tuple.Create(...)'等 –