3
我想將Type
參數傳遞給構造函數。這個構造函數屬於一個屬性。在方法/構造函數中限制「類型」參數
這很簡單。但是,我怎樣才能將這個Type
參數約束到一個特定類的子類?
所以我有一個父類ParentClass
和兩個子類MyChildClass : ParentClass
和MyOtherChildClass : ParentClass
。
我的屬性是這樣的:
public class AssociatedTypeAttribute : Attribute
{
private readonly Type _associatedType;
public Type AssociatedType => _associatedType;
public AssociatedTypeAttribute(Type associatedType)
{
if (!associatedType.IsSubclassOf(typeof(ParentClass)))
throw new ArgumentException($"Specified type must be a {nameof(Parentclass)}, {associatedType.Name} is not.");
_associatedType = associatedType;
}
}
這工作,並在運行時,如果該類型不是ParentClass
它會拋出一個異常 - 但運行時爲時已晚。
是否可以添加某種約束?我可以在這裏使用泛型,還是說泛型是超越界限的,因爲它是屬性的構造函數?
注意用法:
public enum MyEnum
{
[AssociatedType(typeof(MyChildClass))]
MyEnumValue,
[AssociatedType(typeof(MyOtherChildClass))]
MyOtherEnumValue
}
正如我懷疑,非常感謝您的答案。我想知道我是否在這裏成爲XY問題的受害者;也許我的整個方法都是關閉的。再次感謝。 –