[英]Can I assign a static class to a variable?
我的问题是我是否可以将 static class 分配给另一个变量(以及那将是什么类型)?
说我有
public static class AClassWithALongNameIDontWantTotType{
public static bool methodA() { stuff }
}
然后我有
class B{
}
我可以这样做,以便在class B
内部我可以将此 class 重新分配给名称较短的名称,例如:
SomeType a = AClassWithALongNameIDontWantTotType
然后能够做到
a.methodA()
?
我可以通过执行类似的操作来获取 function
Func<bool> a = AClassWithALongNameIDontWantTotType.methodA()
但我更愿意拥有整个 class。
谢谢!
如果您想要这样做纯粹是为了避免输入长名称,您可以使用别名
using a = SomeNamespace.AClassWithALongNameIDontWantToType;
不,你不能,因为你不能拥有 static class 的实例。 您可以通过反射或动态来完成您正在寻找的东西。 为此,我创建了一个DynamicObject
来帮助:
class StaticMethodProvider : DynamicObject
{
private Type ToWorkWith { get; set; }
public StaticMethodProvider(Type toWorkWith)
{
ToWorkWith = toWorkWith;
}
public override bool TryInvokeMember(InvokeMemberBinder binder,
object[] args, out object result)
{
result = ToWorkWith.InvokeMember(binder.Name, BindingFlags.InvokeMethod,
null, null, null);
return true;
}
}
然后你就可以做
dynamic a = new StaticMethodProvider(
typeof(AClassWithALongNameIDontWantTotType));
Console.WriteLine(a.methodA());
但是那样你就不会有智能感知和编译时安全性。 这可能有点矫枉过正。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.