使用反射/泛型生成包装器类

本文关键字:包装 泛型 反射 | 更新日期: 2023-09-27 18:03:03

我想动态地创建一个包装器类,这样对于每个想要的类(可能在某个命名空间下,如DBO),我将得到一个合适的类,如下所示:

public class [ClassName]Wrapper{
    public [ClassName] [ClassName] { get; set; }
}

第二,我需要根据包装器与原始类型进行比较。我假设我可以这样做:

(classBob as Type).ToString().EndsWith("Wrapper")

如果我还需要什么,请帮助我:)。

我对反射相当陌生,我从来没有在运行时构建过类。实现这一点的代码将是伟大的,但即使指出优秀的资源来研究用于实现这一点的工具对我来说也是一个伟大的进步。

谢谢!

使用反射/泛型生成包装器类

难道使用泛型不能解决你的问题吗?

public class Wrapper<T>
    where T : class
{
    public Wrapper(T wrappee)
    {
        Class = wrappee;
    }
    public T Class { get; } // C# 6.0 Syntax, otherwise add "private set;"
} 

可以在运行时使用

创建包装器
Type typeToBeWrapped = objToBeWrapped.GetType();
Type genericWrapper = typeof(Wrapper<>);
Type constructedWrapper = genericWrapper.MakeGenericType(typeToBeWrapped);
object obj = Activator.CreateInstance(constructedWrapper, objToBeWrapped);