TCM*_*TCM 5 c# user-controls casting as-operator
我有一个名为A的班级和一个班级B.
public class A : UserControl { }
public class B : UserControl { }
Run Code Online (Sandbox Code Playgroud)
现在我有一个程序集,其类的函数接受A类的对象.这个程序集不是由我创建的,所以我没有任何控制.基本上它是第三方组装.
但我想提供我的B类对象,因为它是有点自定义的.请放心,它包含A类的所有属性.如何将类B的对象类型转换为A类,以便我可以在项目中集成第三方程序集,并根据我的需要自定义外观和感觉?
如果我这样的东西(A)objB是不允许的.然后我尝试了这个:
UserControl control = objB as UserControl;
A objA = control as A;
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下的问题是objA是null.
为避免混淆:A类和汇编由第三方提供.
提前致谢 :)
考虑到您的层次结构,您将必须编写一个转换运算符。一般来说,没有内置的方法可以做到这一点(思考Dog : Animal和Cat : Animal):
public static explicit operator A(B b) {
// code to populate a new instance of A from b
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用通用反射框架并执行类似的操作
public static void PropertyCopyTo<TSource, TDesination>(
this TSource source,
TDestination destination
) {
// details elided
}
Run Code Online (Sandbox Code Playgroud)
那么你可以说
// b is B
// a is A
b.PropertyCopyTo<A>(a);
Run Code Online (Sandbox Code Playgroud)
这会将之间的所有公共属性复制b到a。
| 归档时间: |
|
| 查看次数: |
6223 次 |
| 最近记录: |