面试题答案
一键面试在Visual Basic中,并没有直接的ExpandoObject
,但在C#中有。在Visual Basic中可以通过DynamicObject
类来实现类似功能。以下是基本步骤及示例代码:
- 创建一个继承自
DynamicObject
的类:这个类将重写TryGetMember
和TrySetMember
方法来实现动态属性的访问和设置。 - 重写
TryGetMember
方法:当访问动态属性时调用此方法,根据属性名返回对应的值。 - 重写
TrySetMember
方法:当设置动态属性时调用此方法,存储属性名和对应的值。
示例代码如下:
Imports System.Dynamic
Public Class DynamicProperties
Inherits DynamicObject
Private propertyValues As New Dictionary(Of String, Object)()
Public Overrides Function TryGetMember(binder As GetMemberBinder, ByRef result As Object) As Boolean
Return propertyValues.TryGetValue(binder.Name, result)
End Function
Public Overrides Function TrySetMember(binder As SetMemberBinder, value As Object) As Boolean
propertyValues(binder.Name) = value
Return True
End Function
End Class
使用示例:
Module Module1
Sub Main()
Dim dynamicObj As New DynamicProperties()
dynamicObj.SomeStringProperty = "Hello, World!"
dynamicObj.SomeIntegerProperty = 42
Console.WriteLine(dynamicObj.SomeStringProperty)
Console.WriteLine(dynamicObj.SomeIntegerProperty)
End Sub
End Module
在上述代码中:
DynamicProperties
类继承自DynamicObject
,实现了动态属性的添加和访问。- 在
Main
方法中,创建了DynamicProperties
的实例,并动态添加了一个字符串类型的属性SomeStringProperty
和一个整数类型的属性SomeIntegerProperty
,然后对这两个属性进行访问并输出。