Я создал интерфейс, как показано ниже.DTO-объект - это объект со сложным значением с 3 параметрами.
public interface IOperation
{
DTO Operate(DTO ArchiveAndPurgeDTO);
}
Мне нужны люди, которые используют этот интерфейс, чтобы иметь возможность наследовать от исходного объекта Value и расширять его там, где это необходимо.
Я предполагал, что они могут просто наследовать объект DTO, добавить (например) другое свойство и использовать его в том же классе, который влияет на этот интерфейс.
Когда я пытаюсь использовать объект расширенного значения, Visual Studio жалуетсячто я больше не использую интерфейс.
Как я могу реализовать эту функциональность.
Заранее благодарен за любые идеи и / или предложения.
Gineer
Редактировать: Код DTO:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Company.ArchiveAndPurge
{
public class DTO
{
public DTO(String FriendlyID)
{
friendlyId = FriendlyID;
}
private String friendlyId = String.Empty;
public String FriendlyId
{
get { return friendlyId; }
set { friendlyId = value; }
}
private String internalId = String.Empty;
public String InternalyId
{
get { return internalId; }
set { internalId = value; }
}
private Boolean archivedSuccessfully = false;
public Boolean ArchivedSuccessfully
{
get { return archivedSuccessfully; }
set { archivedSuccessfully = value; }
}
}
}
Расширенное DTO:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Company.MSO.ArchiveAndPurge
{
public class DTO: Company.ArchiveAndPurge.DTO
{
private Boolean requiresArchiving = true;
public Boolean RequiresArchiving
{
get { return requiresArchiving; }
set { requiresArchiving = value; }
}
}
}
Реализация интерфейса, при которой VS жалуется:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Company.ArchiveAndPurge.Contracts;
using Company.ArchiveAndPurge;
namespace Company.MSO.ArchiveAndPurge
{
public class ResolveFriendlyId: IOperation
{
#region IOperation Members
public DTO Operate(DTO ArchiveAndPurgeDTO)
{
ArchiveAndPurgeDTO.InternalyId = ArchiveAndPurgeDTO.FriendlyId;
return ArchiveAndPurgeDTO;
}
#endregion
}
}