0
public static List<IndianAppStore_GetAllAppsByLanguage_ResultCache> GetAllApps(bool initialized, string language)
{
    List<IndianAppStore_GetAllAppsByLanguage_ResultCache> objApp = new List<IndianAppStore_GetAllAppsByLanguage_ResultCache>();

    List<IndianAppStore_GetAllAppsByLanguage_Result> objApps = new List<IndianAppStore_GetAllAppsByLanguage_Result>();

    if (initialized == false)
    {
        var t = ListCopy(objApps, x => (IndianAppStore_GetAllAppsByLanguage_ResultCache)x); // Error
        objApp = admin.getAllAppsByLanguage(language).ToList();
    }
    else
    {
    }
}

public static List<TResult> ListCopy<TSource, TResult>(List<TSource> input, Func<TSource, TResult> convertFunction)
{
    return input.Select(x => convertFunction(x)).ToList();
}

私のクラス

public class IndianAppStore_GetAllAppsByLanguage_ResultCache
{
    public long AppId { get; set; }
    public string AppName { get; set; }
    public string AppDisplayName { get; set; }
    public string AppDetails { get; set; }
    public string AppImageURL { get; set; }
    public byte[] AppImageData { get; set; }
    public long CategoryId { get; set; }
    public Nullable<long> SubCategoryId { get; set; }
    public string AppCreatedBy { get; set; }
    public System.DateTime AppCreatedOn { get; set; }
    public string AppModifiedBy { get; set; }
    public Nullable<System.DateTime> AppModifiedOn { get; set; }
    public Nullable<bool> isDeleted { get; set; }
    public Nullable<bool> isPromotional { get; set; }
    public string GenderTarget { get; set; }
    public Nullable<long> CountryId { get; set; }
    public Nullable<long> StateId { get; set; }
    public Nullable<long> AgeLimitId { get; set; }
    public Nullable<int> AppMinAge { get; set; }
    public Nullable<int> AppMaxAge { get; set; }
}

ここに画像の説明を入力

あるジェネリック クラスを別のジェネリック クラスに変換しようとしていますが、このエラーが発生します

4

1 に答える 1

1

IndianAppStore_GetAllAppsByLanguage_ResultIndianAppStore_GetAllAppsByLanguage_ResultCacheは異なる型であり、このステートメントで行っているように、最初の型を別の型にキャストすることはできません。

var t = ListCopy(objApps, x => (IndianAppStore_GetAllAppsByLanguage_ResultCache)x);

型が同じ構造を持っている場合は、おそらく 2 つの型ではなく 1 つだけにする必要があります。そうしないと、最初のタイプから別のタイプにデータをコピーする必要があります。例えば:

var t = ListCopy(objApps, x => new IndianAppStore_GetAllAppsByLanguage_ResultCache {
  AppId = x.AppId,
  AppName = x.AppName,
  ...
});

これはすぐに面倒になり、AutoMapperのようなライブラリを使用してプロセスを自動化するという選択肢もあります。

于 2013-10-14T06:32:06.307 に答える