如何解决是否可以创建具有两个具有相同名称的属性的类型?
根据documentation,在以下情况下,const randomBetween = (min,max) => Math.floor(Math.random()*(max-min+1)+min);
const color = [
randomBetween(0,255),randomBetween(0,];
console.log(color);
document.body.style.background = `rgb(${color[0]},${color[1]},${color[2]})`;
会抛出Type.GetProperty(string,BindingFlags)
:
找到多个具有指定名称和匹配项的属性 指定的绑定约束
我正在寻找一个示例类型,其中会抛出AmbiguousMatchException
方法,因为发现多个具有相同名称的属性。我创建了一个继承关系(GetProperty
),其中两个类都使用A : B
定义了相同的命名公共属性(使用new
关键字),但是不会抛出异常。
解决方法
在C#中,一个类可以实现多个索引器,所有这些索引器都称为Item
。
public class Class1
{
public string this[int firstParameter]
{
get { return ""; }
}
public string this[string firstParameter,int secondParameter]
{
get { return ""; }
}
}
然后您可以使用以下方法产生异常:
class Program
{
static void Main()
{
// This will throw AmbiguousMatchException:
typeof(Class1).GetProperty("Item",BindingFlags.Public | BindingFlags.Instance);
}
}
这将产生具有单个类的AmbiguousMatchException
以及Public
和Instance
绑定标志。
这是一个使用BindingFlags.FlattenHierarchy
的示例,该示例导致静态属性和实例属性之间发生名称冲突。
public class Program
{
public class A
{
public static string Property { get; set; }
}
public class B : A
{
public string Property { get; set; }
}
public static void Main(string[] args)
{
var type = typeof(B);
var property = type.GetProperty(
"Property",BindingFlags.Public |
BindingFlags.Static |
BindingFlags.Instance |
BindingFlags.FlattenHierarchy);
}
}
,
如果您将与=ABS(YEARFRAC(A1,EOMONTH(A1,12-MONTH(A1)),1)+YEAR(B1)-YEAR(A1)-1+YEARFRAC(B1,EOMONTH(B1,-MONTH(B1)),1))
一起玩,则可能会导致模棱两可的比赛。例如,BindingFlags
允许您获得此异常,尽管它没有具有相同名称的属性:
BindingFlags.IgnoreCase
接下来用class MyClass
{
public string MyProperty {get; set;}
public int Myproperty {get; set;}
}
typeof(MyClass).GetProperty("MyProperty",BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase)
进行设置也会产生上述错误:
BindingFlags.FlattenHierarchy
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。