[英]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.