Как преобразовать тип entitybase в тип объекта в C # - PullRequest
1 голос
/ 12 сентября 2011

Я попробовал код ниже в .NET 3.5, но получил исключение в строке, показанной в комментарии:

Cannot convert type 'TUnpaid' to 'ClassLibrary1.Unpaid'

Как это исправить в .NET 3.5?

namespace ClassLibrary1
{
    public class EntityBase
    {
        public virtual void Save<T>(T dok) where T : EntityBase, new()
        {
        }
    }

    public class Unpaid : EntityBase
    {
        public override void Save<TUnpaid>(TUnpaid dok)
        {
            // Cannot convert type 'TUnpaid' to 'ClassLibrary1.Unpaid'  
            var kup = (Unpaid)dok;
        }
    }
}

Ответы [ 2 ]

4 голосов
/ 12 сентября 2011

Если вы сделаете свой класс EntityBase универсальным, я думаю, что вы сможете решить эту проблему:

public class EntityBase<T>
{
    public virtual void Save<T>(T dok) where T : EntityBase<T>, new()
    {
    }
}

public class Unpaid : EntityBase<Unpaid>
{
    public override void Save<Unpaid>(Unpaid dok)
    {
        // dok is now of type Unpaid and doesn't need the cast
    }
}
3 голосов
/ 12 сентября 2011

Вы должны либо написать оператор преобразования типов , либо написать метод (или класс), который устанавливает соединения между двумя типами .

В вашем примере кода вы используете два разных типа (TUnpaid и Unpaid) без связи между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...