我不知道问题是否正确但我需要做的是从messagetoprocess存储库方法中获取正确的实体以及相应的数据,在这种情况下我该怎么做? (以下代码)
我正在使用AutoMapper。
我知道我可以创建一个MessageEntity并消除接口并将所有属性放在一起,但这正是我不想做的事情。
这就是我所拥有的:
接口
public interface IMessage
{
string MessageFrom { get; set; }
string MessageTo { get; set; }
{
实施者实体
public class EmailMessageEntity : IMessage
{
public bool IsMessageBodyHtml { get; set; }
}
public class SmsMessageEntity : IMessage
{
public bool IsMmsMessage { get; set; }
}
型号:
public class EmailMessage
{
public string MessageFrom { get; set; }
public string MessageTo { get; set; }
public bool IsMessageBodyHtml { get; set; }
}
public class SMSMessage
{
public string MessageFrom { get; set; }
public string MessageTo { get; set; }
public bool IsMmsMessage { get; set; }
}
Repositry:
public static List<*****Entity problem*****> RetrieveMessageToProcess()
{
var commandSettings = new CommandSettings
{
CommandText = @"[Schema].[RetrieveMessageToProcess]",
CommandType = CommandType.StoredProcedure
};
return new MsSqlProviderBase(DbConnectionString, commandSettings).ExecuteQuery<*****Entity problem*****>();
}
使用它:
//code excerpt
var messagesToProcess = Db.RetrieveMessageToProcess(); //repository
if (messagesToProcess == null) return;
// Process Message(s)
foreach (var messageEntity in messagesToProcess)
{
if (Email) // this is just the verification example not the actual statement and not a variable
{
Mapper.CreateMap<EmailMessageEntity, EmailMessage>();
var emailMessage = Mapper.Map<EmailMessage>(messageEntity);
}
else if (SMS)
{
Mapper.CreateMap<SMSMessageEntity, SMSMessage>();
var smsMessage = Mapper.Map<SmsMessage>(messageEntity);
}
}
答案 0 :(得分:1)
您是否可以考虑在MessageType
界面上设置IMessage
成员而不是两个IsXXX
属性?
您可以返回枚举或您认为合适的任何其他值,并在if(EMAIL)
声明中使用该值。