public void SetMetaTest() { var manager = new HybridResourceManager(GetType()); // not existing base: missing manifest exception Throws <MissingManifestResourceException>(() => manager.GetMetaObject("unknown")); // setting something without culture sets the invariant language so there is no exception anymore manager.SetMetaObject("StringValue", "String invariant"); Assert.IsNotNull(manager.GetMetaObject("StringValue")); Assert.IsNull(manager.GetMetaObject("unknown")); // this creates a derived en resource set manager.SetMetaObject("enOnly", 42, en); // however, there is no resource fallback for metadata Assert.IsNull(manager.GetMetaObject("StringValue", en)); // in compiled mode any set operation throws InvalidOperationException and the changes disappear manager.Source = ResourceManagerSources.CompiledOnly; Throws <InvalidOperationException>(() => manager.SetMetaObject("SetTest", "does not work")); Assert.IsFalse(manager.IsModified); Assert.IsNull(manager.GetMetaString("StringValue")); // is we change to non-compiled mode, changes re-appear manager.Source = ResourceManagerSources.ResXOnly; Assert.IsTrue(manager.IsModified); Assert.IsNotNull(manager.GetMetaString("StringValue")); }