所以对于两个不同的命名空间,我有一个类 Record。我想根据传入的类型返回适当的类型。为了尝试执行此操作,我尝试过此操作,但“T2”不正确。我怎样才能做到这一点?
public T2 GetGeneratedType<T1>(string name) where T1 : class where T2 : class
{
var type = typeof(T1);
var generatedName = type.AssemblyQualifiedName.Replace(type.Name, name);
return (T2)Activator.CreateInstance(Type.GetType(generatedName));
}
我还没有测试过这个(显然不会编译),但是我如何使它工作,以便如果我传入 Namespace1.SomeClass,我会得到 Namespace1.Record,如果我传入 Namespace2.SomeOtherClass,我会得到Namespace2.Record(只要 name == "Record")。
我最初尝试 T 一切,它没有给出任何错误消息,但我想确保输入和输出类型被允许是不同的类型。
编辑:
我可能没有完全解释清楚。
我正在为分叉记录创建数据注释(从技术上讲,由于对他们执行 3 个不同的过程,因此需要能够在任何给定时间为 3 个人分配此记录。一旦完成 3 个过程,它们就会被核对) . 所以 namespace1 是一个项目(不是 Visual Studio 意义上的),而 namespace2 是另一个项目。在 namespace1 中,您有一个 ImportedRecord1 和在 namespace2 ImportedRecord2 (两个具有单独属性的独立项目,尽管或多或少具有相同的目的)。Namespace1 和 Namespace2 都具有与特定命名空间的 ImportedRecord 相关的 Record 类型,然后将分叉到不同类型的 3 个“子记录”(基本上是该项目的导入记录,但具有与 3 个进程之一相关的字段)。