簡體   English   中英

我可以將 static class 分配給變量嗎?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM