您不能将对象强制转换为不属于的类型.如果它属于不同的命名空间,则它不是同一个类.您将不得不创建一个转换器:
public static Namespace1.SomeClass Convert(Namespace2.SomeClass someClass) {
Namespace1.SomeClass rtn = new Namespace1.SomeClass();
rtn.SomeProp = someClass.SomeProp;
rtn.SomeOtherProp = someClass.SomeOtherProp;
return rtn;
}
Run Code Online (Sandbox Code Playgroud)
你甚至可以使用反射来设置Namespace1.SomeClass上与Namespace2.SomeClass同名的所有属性.
此外,如果您拥有其中一个类的代码,则可以检查您的类上的显式和隐式重载.
您可以创建通用转换器,这样您就不必每次需要转换不同类型的对象时都这样做,
T ConvertObject<T>(object M) where T : class
{
// Serialize the original object to json
// Desarialize the json object to the new type
var obj = JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(M));
return obj;
}
// Test ObjectToCast is type Namespace1.Class, obj is Namespace2
Namespace2.Class obj = ConvertObject<Namespace2.Class>(ObjectToCast);
Run Code Online (Sandbox Code Playgroud)
假设两个类是相同的,这将起作用。