我使用以下代码进行azure-caching,它工作正常......
[Serializable]
public class Person
{
public string First { set; get; }
public string Last { set; get; }
}
[TestClass]
public class AzureCachingTests1
{
private static DataCacheFactory _factory;
[TestInitialize]
public void Setup()
{
_factory = new DataCacheFactory(new DataCacheFactoryConfiguration("mycache"));
}
[TestMethod]
public void TestMethod1()
{
DataCache cache = _factory.GetDefaultCache();
var person = new Person { First = "Jane", Last = "doe" };
const string key = "mykey";
cache.Put(key, person, TimeSpan.FromMinutes(10));
var data = (Person)cache.Get(key);
Assert.AreEqual("Jane", data.First);
}
}
现在在Visual Studio的另一个实例中,我运行以下代码......
[TestClass]
public class AzureCachingTests
{
private static DataCacheFactory _factory;
[TestInitialize]
public void Setup()
{
_factory = new DataCacheFactory(new DataCacheFactoryConfiguration("mycache"));
}
[TestMethod]
public void TestMethod1()
{
DataCache cache = _factory.GetDefaultCache();
const string key = "mykey";
var data = (Person) cache.Get(key); <----- Error here... <--------
Assert.AreEqual("Jane", data.First);
}
}
[Serializable]
public class Person
{
public string First { set; get; }
public string Last { set; get; }
}
这一次,我收到以下错误......
测试方法AzureCaching.AzureCachingTests.TestMethod1抛出异常: System.Runtime.Serialization.SerializationException:找不到程序集'AzureCaching1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。
我的班级人员是可序列化的。为什么我无法在AzureCaching1中查询AzureCaching中的缓存?
请帮忙。感谢
答案 0 :(得分:2)
除非您引用了AzureCachingTests1所在的项目,否则您的测试不知道如何反序列化它从缓存中检索的项目。您有两个具有相同名称和相同属性的类,但它们不是同一个类。
因为您正在编写测试,所以您需要从AzureCachingTests所在的项目中引用AzureCachingTests1所在的项目,并删除AzureCachingTests项目中Person的类定义(并确保您正在转换为正确的班级)。
如果这不是测试而你只是想在两个或更多项目之间共享一个类,那么最好的想法是让第三个项目包含两个共同的所有类,在这种情况下它只是人类。