我有以下扩展方法,使用XmlSerialiser
类将对象序列化为XML:
public static string Serialise<T>(this T value)
{
if (value == null)
{
return string.Empty;
}
var xmlserializer = new XmlSerializer(typeof(T));
var stringWriter = new StringWriter();
using (var writer = XmlWriter.Create(stringWriter))
{
xmlserializer.Serialize(writer, value);
return stringWriter.ToString();
}
}
由于XmlSerialiser
无法序列化接口类型,因此我将接口类型转换为具体类型。这是一个.NET Standard 1.3项目。
public void Submit(IMessage message)
{
var xml = ((Message)message).Serialise();
}
使用MsTest
和Moq 4.8.1
,以下测试失败并显示以下消息:Unable to cast object of type Castle.Proxies.IMessageProxy' to type 'MyProject.Message'
[TestMethod]
public void Submit()
{
var mockMessage = new Mock <IHospitalSendBatchMessage>();
_service.Submit(mockMessage.Object);
}
我知道我不应该将接口强制转换为具体类型,但这是使序列化器工作的最快方法。有没有办法模拟铸造操作或解决这个问题的另一种方法?