What is the preferred method of customising NPCs in C#?

I have an NPC C# class script. Ideally I want to have an NPC prefab, and have the ability to add custom dialogue via the inspector. As far as I can gather, there is no way to have ArrayLists or Hashtables exposed via the inspector - so that's not an option.

I don't really want to have to require a customised version of the script for each NPC as the only part of the script that would change per NPC would be the dialogue. I could write a dialogue script for each NPC, and then turn the current NPC script into a Controller-style script attached to a random gameobject and use that to process the dialogue on request, but again that's not really the 'clean' method I was looking for.

So the question would be, how can I apply instance variables for an NPC class without having to write a specific script for each instance?

Is there a reason why you cant use List or an array of string? These work fine in the inspector.

Here is an example using List:

...
using System.Collections.Generic;
...

class MyNPC : MonoBehaviour
{
  public List<string> dialogue;
  ...
}

Have you considered using configuration files, that contain the instance specific data (e.g. as XML) and make the name of the config file configurable via the inspector?

Kudo's to Mr. Tulleken for the List info, but I've decided that I'm going to go down the custom inspector route for these NPC objects as while having lists is cool, I really need nested hashtables inside the lists, and so I'm going to have to build them with a lot of drawing GUI group loops..

http://answers.unity3d.com/questions/4238/how-can-i-make-a-custom-inspector-for-this-object-in-c - If anyone fancies fleshing this answer out a bit, that'd be hugely useful..