相关疑难解决方法(0)

.NET反射的代价是多少?

我经常听到反射的糟糕程度.虽然我一般都避免反思,很少发现没有它就无法解决问题的情况,我想知道......

对于那些在应用程序中使用过反射的人,你是否测量过性能命中率,是否真的如此糟糕?

.net c# reflection performance

204
推荐指数
8
解决办法
6万
查看次数

动态的使用被认为是一种不好的做法吗?

在C#中,有人可以这样做:

MyClass myInstance        = new MyClass();
dynamic mydynamicInstance = myInstance;
Run Code Online (Sandbox Code Playgroud)

然后,调用一个方法,如:

//This method takes a MyClass argument and does something.
Caller.InvokeMethod(myDynamicInstance);
Run Code Online (Sandbox Code Playgroud)

现在,这将导致在运行时确定myInstance类型,如果它有效,Caller.InvokeMethod将正常调用.

现在,我的问题是,如果这被认为是一种不好的做法dynamic,特别是在以下情况下:

1)InvokeMethod使用内部反射实例化myDynamicInstance类型的另一个实例.

2)有一个抽象基类MyBaseClass和它的许多子类,包括MyBaseClass.如果我们InvokeMethod为所有这些派生类提供了许多重载方法,我们是否可以使用它来在运行时允许类型确定,然后通过方法重载(或对该类方法调用的后期绑定)进行适当的调用)?:

public abstract class MyBaseClass         {/*...*/}
public class MyClass        : MyBaseClass {/*...*/}
public class MyAnotherClass : MyBaseClass {/*...*/}

MyBaseClass myBaseClassRef = new MyClass();
dynamic myDynamicInstance  = myBaseClassRef;

Caller.InvokeMethod(myDynamicInstance);
Run Code Online (Sandbox Code Playgroud)

c# reflection dynamic

40
推荐指数
3
解决办法
1万
查看次数

标签 统计

c# ×2

reflection ×2

.net ×1

dynamic ×1

performance ×1